提问者:小点点

Firebase云消息未发送到设备


null

当我确实从Firebase云消息发送给自己一条测试消息时,它确实工作正常,并且成功地向每个设备发送了一个推送通知。

例如,以下是

 exports.observeLikes = functions.database.ref('/user-likes/{uid}/{postId}').onCreate((snapshot, event) => {
     var uid = event.params.uid;
     var postId = event.params.postId;

     return admin.database().ref('/users/' + uid).once('value', snapshot => {
       var userThatLikedPost = snapshot.val();

       return admin.database().ref('/posts/' + postId).once('value', snapshot => {
         var post = snapshot.val();

         if(uid === post.ownerUid) {
          return Promise.resolve();
        }


         return admin.database().ref('/users/' + post.ownerUid).once('value', snapshot => {
           var postOwner = snapshot.val();

           var payload = {
             notification: {
               body: userThatLikedPost.username + ' liked your post ',
              sound: 'default'
             }
           };

           admin.messaging().sendToDevice(postOwner.fcmToken, payload)
           .then((response) => {
             // Response is a message ID string.
             console.log('Successfully sent message:', response);
             return response;
           })
           .catch((error) => {
             console.log('Error sending message:', error);
             throw new Error('Error sending message:', error);
           });
             })
         })
       })
     })

null


共1个答案

匿名用户

所以我找到了问题所在。我从我的设备上删除了这个应用程序,并创建了一个新的帐户(它为该帐户创建了一个新的FCM令牌),推送通知确实起作用。我做了另一个检查,并手动将另一个设备上的FCM令牌更改为它注册的新令牌,并且推送通知成功。看来我现在需要找到一种方法来更新每个当前测试用户的FCM令牌,因为他们当前的设备没有收到通知。