如何使用URI发送Firebase通知以实现深度链接?

时间:2020-08-12 14:03:41

标签: android ios firebase notifications firebase-cloud-messaging

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.urimessage.linkmessage.actionmessage.clickmessage.click_action的几种组合,但没有一种有效。

我们也尝试了data.uridata.linkdata.actiondata.clickdata.click_action,但同样没有运气。

通过阅读Firebase源代码(NotificationsParams:212),我们发现可以在通知上配置链接,但是在文档中却找不到任何相关内容。

我们在哪里以及如何指定URI,以便使用该通知自动构建通知,并且在应用程序处于前台时也可用?

1 个答案:

答案 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是否应该使用,还是可以使用,但是它很奏效,所以我很高兴。

如果有人对此有所了解,请发表评论。

相关问题