如何使用 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);
});
每当实时数据库通过 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); });