Почему уведомления Firebase FCM отправляются даже отправителю сообщения - PullRequest
0 голосов
/ 11 сентября 2018

Как и в WhatsApp, если я отправляю сообщение другим, они получают уведомление посредством push-уведомлений, и мне не отправляется то же самое push-уведомление, потому что я отправитель.В Firebase, независимо от того, являетесь ли вы отправителем или нет, вы получаете push-уведомления о сообщениях, которые вы даже отправили.Как я могу отправлять уведомления другим, кроме меня, если я отправитель?

Я использую функции Firebase Cloud для отправки push-уведомлений.

1 Ответ

0 голосов
/ 11 сентября 2018

Я предполагаю, что «отправитель» в вашем вопросе относится к пользователю вашего приложения и что вы реализуете обмен сообщениями между пользователями.Обычно это работает, когда ваше приложение обращается к серверу, который затем использует 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);
        });
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...