就像在whatsapp中一样,如果我向其他人发送消息,他们就会通过推送通知收到通知,并且不会发送相同的推送通知,因为我是发件人。 在Firebase中,无论您是否是发件人,您都会收到甚至发送的消息的推送通知。如果是发件人,我如何能够向其他人发送通知(不包括我(?
我正在使用 Firebase Cloud 函数发送推送通知。
我假设您问题中的"发件人"是指您应用程序的用户,并且您正在实现用户对用户的消息传递。这通常是通过让您的应用调用服务器来工作,然后服务器使用 FCM API 发送消息:
+--------+ +------------+ +----------+
| Sender | ---> | App Server | ---> | Receiver |
+--------+ +------------+ | +----------+
|
| +----------+
+-> | Receiver |
+----------+
Firebase 客户端消息传递功能不会隐含知道发送消息的用户。向设备发送消息是服务器端 API,以管理访问权限运行。它不是以特定用户身份运行的,因此即使它愿意,也无法跳过该特定用户。
如果要跳过发送给特定用户,则需要将有关该用户的信息传递到调用 FCM API 以发送消息的代码中,然后跳过其中的用户 ID 令牌。假设您在 Node 服务器中使用 Firebase Admin SDK 发送消息,代码可能如下所示:
var UIDs = ["uid1", "uid2", "uid3"];
var TOKENS = { "uid1": "token1", "uid2": "token2", "uid3": "token3" };
function sendMessage(messageText, senderUid) {
UIDs.forEach(function(recipientUid) {
if (recipientUid !== senderUid) {
var message = {
notification: {
title: 'Message from '+senderUid,
body: messageText
},
token: TOKENS[recipientUID
};
admin.messaging().send(message)
.then((response) => {
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
}
});
}