Firebase 云功能推送通知

Posted

技术标签:

【中文标题】Firebase 云功能推送通知【英文标题】:Firebase cloud function push notifications 【发布时间】:2018-03-05 17:17:42 【问题描述】:

目前,我在每次应用启动和令牌刷新时为每个用户订阅一个主题,如下所示:

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) 
    if let user = Auth.auth().currentUser 
        let topic = "topic_for_user_with_id_" + user.uid
        Messaging.messaging().subscribe(toTopic: topic)
    

像这样我可以简单地从云功能发送通知:

const topic = `topic_for_user_with_id_$userId`
return admin.messaging().sendToTopic(topic, payload, options);

为什么我不应该使用主题并将通知直接发送到设备令牌有什么缺点吗?

【问题讨论】:

【参考方案1】:

不,没有缺点,主题通常在很多人订阅某个事物时使用,例如weather。在这种情况下,最好使用主题。

使用令牌发送通知,通常只发给一个人,而不是很多人。

来自关于主题的文档:

基于发布/订阅模型,FCM 主题消息传递允许您向已选择加入特定主题的多个设备发送消息。您可以根据需要编写主题消息,FCM 会处理路由并将消息可靠地传递到正确的设备。

如果您要发送私人通知,请使用令牌发送到该特定设备,因此没有多少人看到私人通知的内容。

我认为使用主题的唯一缺点是用户需要从他自己的手机上取消订阅主题,因为它基于公共/订阅模型。

但我认为这已在Admin FCM API 中解决。

更多信息在这里:

https://firebase.google.com/docs/cloud-messaging/admin/manage-topic-subscriptions

以上内容同时使用主题和令牌,您只需拥有令牌即可取消订阅已注册到主题的用户。

【讨论】:

@3vangelos 如果答案对您有帮助,请点赞并将其标记为正确,以便对其他人有所帮助,谢谢! 太棒了!谢谢你的回答!

以上是关于Firebase 云功能推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 云功能不发送异步推送通知

IOS Firebase 云功能中未收到推送通知

Firebase云功能推送通知

Firebase 云消息传递不会创建推送通知,但会获取信息

Firebase 函数从 Firebase DB 获取数据以进行推送通知

使用 Cloud Functions for Firebase 发送推送通知