我正在实现在Firebase Firestore文档更改时出现推送通知的功能。我使用了react-native-firebase模块。我的Google云函数监听Firestore的更改,然后通过firebase-admin发送消息。
谷歌的参考文档显示你可以指定一个设备进行信息推送:
// This registration token comes from the client FCM SDKs.
var registrationToken = 'YOUR_REGISTRATION_TOKEN';
var message = {
data: {
score: '850',
time: '2:45'
},
token: registrationToken
};
// Send a message to the device corresponding to the provided
// registration token.
admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
在我的React-Native应用中的客户端,我使用react-native-firebase
获取一个令牌:
function getToken() {
let fcmToken = await AsyncStorage.getItem("fcmToken");
if (!fcmToken) {
fcmToken = await firebase.messaging().getToken();
if (fcmToken) {
await AsyncStorage.setItem("fcmToken", fcmToken);
}
}
}
我是否需要将Google Cloud消息传递令牌存储在除异步存储之外的其他地方,还是有一种方法可以直接在Google Cloud函数内部访问它?看起来我应该将认证令牌存储在Firestore中,并使用Cloud函数访问Firestore。这是最好的做法吗?
context.instanceIdToken
在可调用的云函数中获取实例ID令牌。 - Frank van Puffelenfirestore()。collection(users).doc(uid).get()
时,原始响应对象包括fcmToken,因此您可以将其写入数据库,然后使用用户ID在云函数中获取它,这是一个示例:https://github.com/firebase/functions-samples/blob/master/fcm-notifications/functions/index.js - user6144056