将通知推送到 FCM 主题

push notification azure to FCM topics

我想使用主题将通知消息从 Azure 通知中心推送到 FCM。

示例:我想从通知中心向 FCM 发送消息。但此消息将针对主题。例如,当使用邮递员时,我只需要发送这个 json:

{
    "to" : "/topics/scalability",
    "notification":{"body":"topics message sent"}
}

https://fcm.googleapis.com/fcm/send(同时提供当然的 FCM 密钥)。

通过这样做,我可以在我安装的 chrome 应用程序上收到通知(该应用程序与您可以找到的应用程序相同 here

现在我的问题是,当我在通知中心 (Azure) 上发送同样的消息时,我的 Web 应用程序没有收到它。我的理解是通知中心不会以简单格式推送消息 (json),但这是为什么呢?

既然我成功将消息推送到 FCM,难道 FCM 不应该解释 "to" : "/topics/scalability 部分 ?

Azure Notification Hub 支持在单个设备上注册标签。当通过通知中心发送推送通知时,您可以使用标记表达式来定位特定的设备集,或者更具体地说是注册。对于定位,您应该使用标签表达式而不是 FCM ‘to’ 属性。有关 routing/expressions.

的更多详细信息,请参阅下面的文章

https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-tags-segment-push-message

我知道这是一个老问题,但我在启动我的第一个 Topics-based 通知中心应用程序时也对此感到困惑,所以希望这可以在某个时间的某个地方拯救某人。在我看来,应该在 azure NH 文档的某处明确说明的是,将集线器与 PNS(例如 Firebase)一起使用将覆盖任何 PNS 特定主题功能。我的理解是,如果你决定走 Hub 路线,你就会放弃 Firebase 主题等,而只使用 Hub 标签。

如果您考虑一下,它实际上很有意义,因为它意味着 Hub 正在处理主题过滤,而不是触发所有消息并让 PNS 系统做它们各自的事情。

所以简而言之,如果你走 NH 路线,你就不能使用 PNS 主题,我发现两者不能很好地结合在一起。

我找到了解决方法。我使用通知中心方法的简单版本发送通知:

// Send the message to FCM NotificationOutcome outCome = await this.hubClient.SendGcmNativeNotificationAsync(payload). 

然后我会收到来自我的 chrome 应用程序的所有消息