我正在尝试将FCM嵌入到应用程序中,以便能够发送和接收推送通知。
据我了解,要能够生成令牌,用户必须授予接收通知的权限,否则将不会生成令牌。
检查用户首次访问页面时是否订阅通知的正确方法是什么?我有应该生成的代码,并检查Firebase数据库上是否存在令牌,但是当用户首次在页面上时,令牌为null,并且代码崩溃:
Reference.child失败:第一个参数是无效路径=“ null”
检查用户是否已订阅的代码:
checkSubscription() {
//fetching the device token
//get the token
const messaging = firebase.messaging();
try {
messaging.usePublicVapidKey("BBo4YTppeQBIkyrt35luDSiPXyyOD1hBryq3aq6ELjWWHRLKtZGwNuD0Zlymh_UbgrozxCIpt8CaqCnYI3Urd3Q");
} catch (e) {
console.log(e);
}
// get the token for this device
messaging.getToken().then((token) => {
console.log("token = " + token);
//checking if the branch for that device token exists on firebase
const userId = firebase.auth().currentUser.uid
firebase.database().ref('/users/' + userId + '/deviceTokens/').child(token).once('value').then((snapshot) => {
if (snapshot.val()) {
console.log("snapshot value = " + snapshot.val())
this.setState({
userSubscribeStatus: "Notifications are Enabled",
isSubscribed: true
})
console.log("user is subscribed")
} else {
this.setState({
userSubscribeStatus: "Notifications are Disabled",
isSubscribed: false
})
// unsubscribeButton.setAttribute("hidden", "true");
// subscribeButton.removeAttribute("hidden");
console.log("user is not subscribed")
}
});
});
}
或者当令牌为空时,也许有一种方法可以直接移至“其他”方案?
在此先感谢您的帮助!