firebase / firebase/firebase-admin-java
[FR] Expose `link` / `link_android` in notifications for deep linking
- 主要語言
- Java
- 星號
- 620
- 分支
- 305
- 平均合併
- 3 小時 23 分鐘
- 30 天內合併 PR
- 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 payload 的對應方式。檢視現有通知屬性如何序列化,接著確認 link 和 link_android 應如何對應至 gcm.n.link 和 gcm.n.link_android。官方支援的欄位能產生所需的 deep-link 通知 payload,即表示完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- firebase, java
- 領域
- api, backend-api-design
- Issue 類型
- 功能
- 難度
- 5/5
- 預估耗時
- 一週以上
- 活躍度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100