【问题标题】:How to send Firebase Notifications with URIs to implement deep linking?如何使用 URI 发送 Firebase 通知以实现深度链接?
【发布时间】:2020-08-12 14:03:41
【问题描述】:

tr;博士

刚刚意识到这个问题只适用于 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,以便使用它自动构建通知,并且在应用程序处于前台时也可用?

【问题讨论】:

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


    【解决方案1】:

    似乎在data 对象中发送gcm.n.link 有效。

    使用以下 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 Filter 将使 Android 在点击通知时打开该 Activity。

    我在文档中没有找到任何与之相关的内容,通过他们的源代码发现了这一点。所以不确定gcm.n.link是否应该被使用或者什么,但是它有效,所以我很高兴。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      相关资源
      最近更新 更多