【问题标题】:Firebase - Sending FCM Post to a single device in a specific topicFirebase - 将 FCM 帖子发送到特定主题中的单个设备
【发布时间】:2019-01-24 10:20:51
【问题描述】:

我正在使用 Xamarin 和 Firebase Cloud Messaging 向移动设备发送推送通知。

我有通知设置,用户可以在其中允许和阻止特定的通知类型。例如,我制作了主题 A、B、C。如果用户允许 A 类型的通知,则设备将订阅主题 A。如果它订阅了 A 类型的通知,我想向该设备发送唯一通知。但是,我似乎无法将两个参数添加到 '到:'

目前我有:

{
"to": "{device_token}",
"data": {
"message": "hello",
},
"priority": "high"
}

我尝试添加"condition": 'A' in topics,但它不允许我同时拥有“to”和“condition”。

【问题讨论】:

  • 不允许 tocondition 一起使用是 FCM 中的一个限制——因此该部分是预期的。根据您的用例,只需保留您的 condition 参数,它应该可以工作。干杯!
  • 如果我保留我的条件参数,它将发送到主题 A 中的每个设备。我想发送到主题 A 中的特定设备
  • 主题 A 中的特定设备。所以基本上就是那个。如果你已经有了token,那么你就不需要指定主题了。
  • 是的,但是如果设备没有订阅主题 A,那么它不应该收到通知。所以基本上如果 {device_token} 存在于主题 A 中,发送通知。否则,不要。
  • 我有一个通知设置页面,里面有3个开关。如果用户切换开关 1,它将订阅主题 A,因此用户想要基于主题 A 的通知。如果用户关闭主题 A,则用户取消订阅主题 A,因此不希望收到来自该主题的通知。这些通知对于每个设备都是唯一的,因此我无法向主题 A 中的所有设备发送全局通知

标签: firebase xamarin xamarin.forms firebase-cloud-messaging cordova-plugin-fcm


【解决方案1】:

您不能以您尝试的方式组合主题和标记。如果您向某个主题发送消息,则该消息将传送到订阅该主题的每个实例。如果您将消息发送到设备令牌,它只会传送到该设备。

我能想到的一些选项:

  • 发送数据消息,然后在客户端检测是否显示。

  • 在设备实例 ID 之上构建您自己的消息定位系统。

【讨论】:

  • 我正在使用github.com/CrossGeeks/FirebasePushNotificationPlugin 在通知显示给用户之前似乎没有解决方案来检测通知。我只能看到 onNotificationOpened 和 onNotificationReceived (在向用户显示通知后都会触发)
  • 在此处查看文档:github.com/CrossGeeks/FirebasePushNotificationPlugin/blob/…。它讨论了消息类型,数据消息是我在回答中提到的类型。所以看起来产品知道消息类型,虽然我没有立即看到他们的 API 中的什么方法会被调用来处理数据消息。
  • 我明白了,仍然没有办法阻止数据消息在发送后显示在设备上(据我所知)
  • "使用 FCM,您可以向客户端发送两种类型的消息:通知消息,有时被认为是“显示消息”。这些消息由 FCM SDK 自动处理。数据消息,它由客户端应用处理。"
猜你喜欢
  • 2017-01-25
  • 2017-10-03
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多