Firebase 云消息未发送到设备
Firebase cloud message not sending to device
我正在尝试让用户在发生某项操作(例如、评论等)时接收推送通知。在日志中,我有时会得到 sucesscount: 1 但是设备没有收到通知。但大多数时候是faliurecount:1第二次。无论如何我都没有收到推送通知。当我部署我的功能时,没有任何错误。
当我从 Firebase 云消息传递给自己发送一条测试消息时,它确实可以正常工作并成功向每个人的设备发送推送通知。
例如observing likes
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);
});
})
})
})
})
日志
所以我发现了问题。我从我的设备中删除了该应用程序并创建了一个新帐户(它为该帐户创建了一个新的 FCM 令牌)并且推送通知确实有效。我又做了一次检查,并手动将另一台设备上的 FCM 令牌更改为它注册的新令牌,推送通知成功。看来我现在需要找到一种方法来更新每个当前测试用户的 FCM 令牌,因为他们当前的设备没有收到通知。
我正在尝试让用户在发生某项操作(例如、评论等)时接收推送通知。在日志中,我有时会得到 sucesscount: 1 但是设备没有收到通知。但大多数时候是faliurecount:1第二次。无论如何我都没有收到推送通知。当我部署我的功能时,没有任何错误。
当我从 Firebase 云消息传递给自己发送一条测试消息时,它确实可以正常工作并成功向每个人的设备发送推送通知。
例如observing likes
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);
});
})
})
})
})
日志
所以我发现了问题。我从我的设备中删除了该应用程序并创建了一个新帐户(它为该帐户创建了一个新的 FCM 令牌)并且推送通知确实有效。我又做了一次检查,并手动将另一台设备上的 FCM 令牌更改为它注册的新令牌,推送通知成功。看来我现在需要找到一种方法来更新每个当前测试用户的 FCM 令牌,因为他们当前的设备没有收到通知。