tr; dr
刚刚意识到,这个问题仅适用于Android,因为iOS处理通知的方式有所不同,您可以对通知进行处理。
现在,根据我的理解,我可以将问题简化为以下内容:
如何使Android设备显示具有通过URI配置的深层链接的通知而根本不进行编码?
我们需要在Android和iOS平台的系统托盘上显示带有深层链接的通知,每个通知必须打开应用程序的特定屏幕。
必须使用URI配置深层链接。
在Android上,当应用程序位于前台时,必须手动处理来自Firebase的消息。这样,我们就可以从远程消息中读取所有数据,并使用使用URI配置的深层链接来构建通知。
但是,当应用程序在后台运行时,Firebase会自动显示通知。无法在其上配置深层链接。
我们知道可以发送数据消息而不是通知消息。这将是Android上的解决方案,因为每条消息都必须手动处理,从而可以使用URI,深层链接以及所有内容来构建我们所希望的通知。
但这在iOS上不起作用。在iOS上,必须发送通知消息。
这是Firebase接受的基本JSON:
{
"message": {
"notification": {
"title": "Lorem",
"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
},
"token": "..."
}
}
我们尝试设置message.uri
,message.link
,message.action
,message.click
,message.click_action
的几种组合,但没有一种有效。
我们也尝试了data.uri
,data.link
,data.action
,data.click
,data.click_action
,但同样没有运气。
通过阅读Firebase源代码(NotificationsParams:212),我们发现可以在通知上配置链接,但是在文档中却找不到任何相关内容。
我们在哪里以及如何指定URI,以便使用该通知自动构建通知,并且在应用程序处于前台时也可用?
答案 0 :(得分:0)
似乎可以在gcm.n.link
对象中发送data
。
使用以下json,Firebase Messaging 20.2.4将自动使用其数据中值为gcm.n.link
构建一个通知:
{
"message": {
"notification": {
"title": "Lorem",
"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
},
"data": {
"gcm.n.link": "app://details/identifier"
},
"token": "..."
}
}
在Activity上配置与该URI匹配的Intent过滤器将使Android在点击通知时打开该Activity。
我在文档中没有找到与之相关的任何内容,而是通过他们的源代码进行的。因此不确定gcm.n.link
是否应该使用,还是可以使用,但是它很奏效,所以我很高兴。
如果有人对此有所了解,请发表评论。