【问题标题】:Firebase cloud function push notificationsFirebase 云功能推送通知
【发布时间】: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);

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

【问题讨论】:

    标签: ios swift firebase firebase-cloud-messaging google-cloud-functions


    【解决方案1】:

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

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

    来自关于主题的文档:

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

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

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

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

    更多信息在这里:

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

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

    【讨论】:

    • @3vangelos 如果答案对您有帮助,请点赞并将其标记为正确,以便对其他人有所帮助,谢谢!
    • 太棒了!谢谢你的回答!
    猜你喜欢
    • 2019-12-18
    • 2018-06-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2020-09-13
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多