ReactJS Firebase Cloud Messaging:如何检查用户是否为首次订阅?

时间:2018-08-06 14:35:58

标签: reactjs firebase firebase-cloud-messaging

我正在尝试将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")
            }
        });
    });
}

或者当令牌为空时,也许有一种方法可以直接移至“其他”方案?

在此先感谢您的帮助!

0 个答案:

没有答案