firebase / firebase/firebase-admin-java

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

未關閉
#1,142 2 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
needs-triage type: feature request
主要語言
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

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。