【发布时间】:2019-08-13 02:57:01
【问题描述】:
所以我的推送通知工作得很好。我遇到的大问题是如果用户喜欢/评论自己的照片,他们将收到自己的推送通知。我不知道如何解决这个问题。例如,假设我喜欢我自己的照片,我收到推送通知“克林特喜欢你的帖子”,这就是我,与评论相同,如果我正在回复对我的帖子的评论。 “克林特评论了你的帖子”。
这是我通过 Atom 编写的用于通知的代码。
exports.observeComments = functions.database.ref('/comments/{postId}/{commentId}').onCreate((snapshot, event) => {
var postId = event.params.postId;
var commentId = event.params.commentId;
return admin.database().ref('/comments/' + postId + '/' + commentId).once('value', snapshot => {
var comment = snapshot.val();
var commentUid = comment.uid;
return admin.database().ref('/users/' + commentUid).once('value', snapshot => {
var commentingUser = snapshot.val();
var username = commentingUser.username;
return admin.database().ref('/posts/' + postId).once('value', snapshot => {
var post = snapshot.val();
var postOwnerUid = post.ownerUid;
return admin.database().ref('/users/' + postOwnerUid).once('value', snapshot => {
var postOwner = snapshot.val();
var payload = {
notification: {
body: username + ' commented on your post '
}
};
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);
});
})
})
})
})
})
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();
return admin.database().ref('/users/' + post.ownerUid).once('value', snapshot => {
var postOwner = snapshot.val();
var payload = {
notification: {
body: userThatLikedPost.username + ' liked your post '
}
};
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);
});
});
})
})
})
【问题讨论】:
-
只是为了基本了解,您需要从业务逻辑中排除您登录的用户设备ID。
-
你有没有我可以参考的例子或来源?
-
@iOSTeam 抱歉忘了提及你..
-
你的问题解决了吗?
-
@iOSTeam 对不起,我不明白你的意思。
标签: javascript ios push-notification atom-editor