Android firebase firestore&functions pushNotification 使用 fcm 令牌错误

升级项目后,我一整天都在研究 firebase 功能, 我想要的是将通知推送到 firestore 文档用户的令牌,

这是我的数据库结构

EX:当集合Visitor doc改变时,推送消息到doc里面的token

Android firebase firestore&functions pushNotification 使用 fcm 令牌错误

Android firebase firestore&functions pushNotification 使用 fcm 令牌错误

exports.vsUp = functions.firestore.document("Visitor/{docId}").onUpdate(
    (snapshot,context) => {
        admin.firestore().collection("Visitor/{docId}/{token}/{docId}").get().then(
            result => {
                var registrationTokens = [];
                result.docs.forEach(
                    tokenDocument => {
                        registrationTokens.push(tokenDocument.data().token);
                    }
                );
                admin.messaging().sendMulticast({
                    tokens: registrationTokens,notification: {
                        title: snapshot.data().visitor_name,body: snapshot.data().visitor_status
                    }
                })
            }
        )
    }

这是我现在的functions.js代码,但它不起作用,

怎样才能实现我想做的事? 谢谢>3

uwycny 回答:Android firebase firestore&functions pushNotification 使用 fcm 令牌错误

这条线不起作用:

signer

此处的 admin.firestore().collection("Visitor/{docId}/{token}/{docId}").get() 位仅被解释为文字字符串。由于没有具有该名称的集合/文档,因此您不会得到任何结果。

如果您想为请求中指定的用户加载所有令牌,它看起来像这样:

{token}

所以你可以看到:

  • 这使用 admin.firestore().collection(`Visitor/${context.params.docId}/token`).get() 来标记字符串,以便 JavaScript 将其解释为模板。您无需在第一行执行此操作,因为在您部署 Cloud Function 时 Firebase 本身会对其进行解释。
  • 路径现在由三部分组成,因此它指向一个集合,而不是代码中的四部分,这意味着它指向一个文档。
  • 我们使用 ` 来获取触发 Cloud Function 的 ${context.params.docId} 的值。

请注意,消息未传送到设备的原因可能有很多,但这些绝对是您的代码未从 Firestore 读取任何内容的部分原因。

本文链接:https://www.f2er.com/2528.html

大家都在问