Я предполагаю, что «отправитель» в вашем вопросе относится к пользователю вашего приложения и что вы реализуете обмен сообщениями между пользователями.Обычно это работает, когда ваше приложение обращается к серверу, который затем использует API FCM для отправки сообщения:
+--------+ +------------+ +----------+
| Sender | ---> | App Server | ---> | Receiver |
+--------+ +------------+ | +----------+
|
| +----------+
+-> | Receiver |
+----------+
Клиент Firebase Messaging не имеет никаких явных сведений о пользователе, отправляющем сообщение.Отправка сообщений на устройства на - это серверный API, который работает с административным доступом.Он не работает как конкретный пользователь, поэтому не может пропустить этого конкретного пользователя, даже если он этого хочет.
Если вы хотите пропустить отправку определенному пользователю, вам нужно будет передать информацию об этом пользователе в код, который вызывает API FCM для отправки сообщения, а затем пропускает там жетоны идентификаторов пользователей.Скажем, вы используете Firebase Admin SDK на Node-сервере для отправки сообщений, код может выглядеть следующим образом:
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);
});
}
});
}