如何使用 URI 发送 Firebase 通知以实现深度链接?
How to send Firebase Notifications with URIs to implement deep linking?
tr;博士
刚刚意识到这个问题只适用于 Android,因为 iOS 处理通知的方式有点不同,您可以对通知做任何您想做的事。
根据我的理解,现在我可以将我的问题简化为以下内容:
How to make an Android device display a notification with a deep link configured from a URI without coding at all?
我们需要在 Android 和 iOS 平台的系统托盘上显示深度为 link 的通知,每个通知都必须打开应用程序的特定屏幕。
深度 link 必须使用 URI 配置。
在 Android,当应用程序在前台时,必须手动处理来自 Firebase 的消息。这样我们就可以从远程消息中读取所有数据并构建一个通知,其中包含使用 URI 配置的深度 link。
但是当应用程序在后台运行时,Firebase 会自动显示通知。无法在其上配置深度 link。
我们知道可以发送数据消息而不是通知消息。这将是 Android 上的一个解决方案,因为每条消息都必须手动处理,从而可以根据我们的喜好使用 URI、深度 links 和所有内容构建通知。
但这不适用于 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
的几种组合,但其中 none 有效。
我们也尝试过 data.uri
、data.link
、data.action
、data.click
、data.click_action
,但还是失败了。
阅读 Firebase 源代码 (NotificationsParams:212) 我们发现有一种方法可以在通知上配置 link,但我们没有在文档中找到任何相关信息。
我们在哪里以及如何指定 URI,以便使用它自动构建通知,并且当应用程序在前台时也可用?
似乎在 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 过滤器将使 Android 在点击通知时打开 Activity。
我没有在文档中找到任何与之相关的内容,而是通过他们的源代码找到的。所以不确定 gcm.n.link
它是否应该被使用或什么但是,它有效所以我很高兴。
如果有人对此有所了解,请发表评论。
tr;博士
刚刚意识到这个问题只适用于 Android,因为 iOS 处理通知的方式有点不同,您可以对通知做任何您想做的事。
根据我的理解,现在我可以将我的问题简化为以下内容:
How to make an Android device display a notification with a deep link configured from a URI without coding at all?
我们需要在 Android 和 iOS 平台的系统托盘上显示深度为 link 的通知,每个通知都必须打开应用程序的特定屏幕。
深度 link 必须使用 URI 配置。
在 Android,当应用程序在前台时,必须手动处理来自 Firebase 的消息。这样我们就可以从远程消息中读取所有数据并构建一个通知,其中包含使用 URI 配置的深度 link。
但是当应用程序在后台运行时,Firebase 会自动显示通知。无法在其上配置深度 link。
我们知道可以发送数据消息而不是通知消息。这将是 Android 上的一个解决方案,因为每条消息都必须手动处理,从而可以根据我们的喜好使用 URI、深度 links 和所有内容构建通知。
但这不适用于 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
的几种组合,但其中 none 有效。
我们也尝试过 data.uri
、data.link
、data.action
、data.click
、data.click_action
,但还是失败了。
阅读 Firebase 源代码 (NotificationsParams:212) 我们发现有一种方法可以在通知上配置 link,但我们没有在文档中找到任何相关信息。
我们在哪里以及如何指定 URI,以便使用它自动构建通知,并且当应用程序在前台时也可用?
似乎在 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 过滤器将使 Android 在点击通知时打开 Activity。
我没有在文档中找到任何与之相关的内容,而是通过他们的源代码找到的。所以不确定 gcm.n.link
它是否应该被使用或什么但是,它有效所以我很高兴。
如果有人对此有所了解,请发表评论。