firebase / firebase/firebase-admin-java

[FR] Expose `link` / `link_android` in notifications for deep linking

オープン
#1,142 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
needs-triage type: feature request
主要言語
Java
スター
620
フォーク
305
平均マージ
3時間 23分
マージ済み PR(30日)
1

説明

### Problem statement
Deep linking on Android requires the `data` field in the `Intent` to be set. As described in [this SO post](https://stackoverflow.com/questions/63378233/how-to-send-firebase-notifications-with-uris-to-implement-deep-linking) or firebase/firebase-android-sdk#6703, the only way to populate the the field in notifications created automatically by the Firebase Android SDK (when the app is in the background) is by setting the `gcm.n.link` or `gcm.n.link_android` keys in `data`, which have reserved prefixes and are therefore not _supposed_ to be used (although setting them works, at least today).

_Originally posted by @lehcar09 in [#6703](https://github.com/firebase/firebase-android-sdk/issues/6703#issuecomment-2666361645)_:
> Alternatively, we can file a feature request to support the `link` or `link_android` field. I’ll get back to you once I hear back from them.

So, this is the FR to officially support these :)

### Strawman

A strawman proposal would be to add `link` properties to the `Notification` / `AndroidNotification` classes, which would then be mapped to `gcm.n.link` / `gcm.n.link_android` in the JSON payload. Equivalently, in the HTTP API instead of this:

```JSON
{
"message": {
"notification": {
"title": "Lorem",
"body": "Ipsum"
},
"data": {
"gcm.n.link": "app://deep/link"
},
}
}
```
It would be this:
```JSON
{
"message": {
"notification": {
"title": "Lorem",
"body": "Ipsum",
"link": "app://deep/link"
}
}
}
```
or this:
```JSON
{
"message": {
"android": {
"notification": {
"title": "Lorem",
"body": "Ipsum",
"link": "app://deep/link"
}
}
}
}
```

### Alternatives
The workaround suggested [here](https://github.com/firebase/firebase-android-sdk/issues/6703#issuecomment-2683556930) of using `setAction` doesn't work, because actions needs to be declared in the Android manifest in order to match the intent, which conflicts with dynamically registering deep link targets.

Thanks!

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、Notification クラスと AndroidNotification クラス、および HTTP API ペイロードのマッピングを見つけます。既存の通知プロパティがどのようにシリアライズされるかを確認し、次に link と link_android を gcm.n.link と gcm.n.link_android にどのようにマッピングすべきかを判断します。公式にサポートされているフィールドによって、必要なディープリンク通知ペイロードが生成されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
firebase, java
領域
api, backend-api-design
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。