【问题标题】:How to retrieve all user tokens and send FCM to all如何检索所有用户令牌并将 FCM 发送给所有人
【发布时间】:2020-07-17 18:30:26
【问题描述】:

我正在尝试一次向多个用户发送 FCM。除了使用一个主题之外,我似乎找不到明确的答案,但我有几个条件让我很难做到这一点。是否可以从特定文档中提取所有标记(类似于将其设置为主题但基于我的逻辑)并将该数组传递给 Cloud 函数?

我当前的代码如下,它适用于单个用户(我只发布提取令牌的部分):

 return admin.firestore().doc('Seller_tokens/tokens/' + brand + '/wc').get().then(usertokensdoc =>{

             const sellertokenID = usertokensdoc.get("dXufWMvOTLXUOyj8XNv9NFmsQ4x1");

        const payload = {

            data:{
                title:'FCM - Test',
                content: 'FCM - This is a test message,

            },
            token: sellertokenID
        };

换行:

const sellertokenID = usertokensdoc.get("dXufWMvOTLXUOyj8XNv9NFmsQ4x1");

我不想指定单个用户 ID,其中“用户 ID”是文档中的字段。因此,如果可能的话,我想传递一个数组。

【问题讨论】:

    标签: node.js google-cloud-functions firebase-cloud-messaging


    【解决方案1】:

    正如您所提到的,正如官方文档Send messages to multiple devices 中所阐明的那样,向多个令牌发送消息只有两种方式:

    Firebase 云消息传递提供以下两种方式将消息定位到多个设备:

    • 主题消息传递,允许您向选择加入特定主题的多个设备发送消息。

    • 设备组消息,允许您向属于您定义的组的多个设备发送消息。

    除此之外,正如另一个问题here 中提到的,没有API 可以让您一次获取所有令牌,因此,您需要单独获取以供使用。

    所以,总而言之,没有自动获取令牌的方法,但是一旦你得到它们,我相信使用 Device Messaging 方式对你来说会更好,因为你可以定义根据您检索到的令牌,接收 FCM 的特定组。

    如果这些信息对您有帮助,请告诉我!

    【讨论】:

    • @gso-gabriel,我今天考虑了一下,我认为主题是最好的方法。今晚会试一试。我唯一的希望是条件不会太复杂而无法在云功能上复制
    • 当然,我了解@WaseemAhmed,希望您的开发一切顺利! :)
    • 就像反馈一样。主题效果惊人。怯场想尝试一下,但很高兴我做到了。
    【解决方案2】:

    您可以在云功能中根据您的条件检索令牌文档。遍历它们,创建一个令牌数组并将它们传递给 Firebase 消息,如下所示 admin.messaging.sendToDevice(令牌,有效负载)。下面的网址有一个很好的例子。

    FCM - Cloud Functions Example

    【讨论】:

      猜你喜欢
      • 2018-02-04
      • 2021-02-15
      • 2022-11-01
      • 2012-11-16
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      相关资源
      最近更新 更多