Облачные функции Firestore Отправка уведомления pu sh указанному c пользователю - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть приложение чата. Я использую Firebase Firestore DB, я сохраняю последние сообщения, подобные следующим:

Сторона отправителя: Сообщения -> currentUserId -> Recent_messages

Сторона получателя: Сообщения -> recieverId -> latest_messages

Это означает, что одно и то же сообщение будет написано как текущему пользователю, так и получателю пользовательских документов. (одно и то же сообщение будет записано в два разных документа)

содержание сообщения выглядит следующим образом:

- сторона отправителя

 let fromData = ["text": text , "uid": toId, "userProfileUrl":  userAvatarUrl, "timestamp": Timestamp(date: Date()), "seen": false]

сторона получателя

 let toData = ["text": text  ,"uid": currentUserID, "userProfileUrl":  currentUser?.profileImageUrl ?? "", "timestamp": Timestamp(date: Date()),"seen": false] 

Теперь я хочу наблюдать за коллекцией recent_messages и отправлять уведомление только пользователю получателя. Есть ли способ , чтобы избежать отправки пу sh уведомление для них обоих?

1 Ответ

1 голос
/ 11 февраля 2020

Получите регистрационный токен пользователя получателя:

// Callback fired if Instance ID token is updated.
messaging.onTokenRefresh(() => {
  messaging.getToken().then((refreshedToken) => {
    console.log('Token refreshed.');
    // Indicate that the new Instance ID token has not yet been sent to the
    // app server.
    setTokenSentToServer(false);
    // Send Instance ID token to app server.
    sendTokenToServer(refreshedToken);
    // ...
  }).catch((err) => {
    console.log('Unable to retrieve refreshed token ', err);
    showToken('Unable to retrieve refreshed token ', err);
  });
});

Затем используйте sendToDevice для отправки уведомления пользователю:

admin.messaging().sendToDevice(token_id, payload)
  .then(function(response) {

    console.log('Successfully sent:', response);
  })
  .catch(function(error) {
    console.log('Error sending:', error);
  });

Вы можете отправить токен на сервер, добавив его в базу данных, затем на стороне сервера вы можете прочитать из базы данных и получить токен.

https://firebase.google.com/docs/cloud-messaging/js/first-message

https://firebase.google.com/docs/reference/admin/node/admin.messaging.Messaging.html#send -todevice

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...