如何使用 Cloud Functions 保存设备令牌 (Javascript)

How can I save a device Token using Cloud Functions (Javascript)

每当实时数据库通过 FCM 发生变化并最终通过 Firebase Cloud Functions 发生变化时,我都成功地推送了通知

但我通过使用硬编码的设备令牌设置常量来实现:

const registrationToken = "yuYF4yF3nkj....." 

然后在我触发通知时添加它

return admin.messaging().sendToDevice(registrationToken, payload, options); 

我也试过在context.instanceIdToken;中使用:

exports.pushNotification = functions.database .ref("....") .onWrite((change, context) => {
const TokenID = context.instanceIdToken;
console.log(TokenID); 

但它打印出来:“undefined”

我如何才能读取我设备的令牌而不是将其硬编码进去,因为如果我要共享此应用程序,我会假设每个设备的令牌都不同。

为此,您需要为设备订阅一个主题,以便 FCM 知道它需要向哪些设备发送通知。我建议您阅读此 documentation 以了解有关如何操作的更多详细信息,但总结起来您需要:

  • 使用以下代码为您希望的设备订阅主题:

    Messaging.messaging().subscribe(toTopic: "YOUR_TOPIC_NAME")
    
  • 在您的云函数中触发消息发送给所有订阅您主题的人,您可以使用此代码作为示例:

    var topic = 'YOUR_TOPIC_NAME';
    
    var message = {
        data: {
            text: 'hello world'
        },
        topic: topic
    };
    
    admin.messaging().send(message).then((response) => {
        console.log('Successfully sent message:', response);
    })
    .catch((error) => {
        console.log('Error sending message:', error);
    });