Почему на устройстве не отображается уведомление Pu sh, когда в журнале указано, что ошибки нет? - PullRequest
3 голосов
/ 09 февраля 2020

Я развернул следующую функцию firebase для реализации уведомлений pu sh в моем облачном приложении чата firestore. Я делаю это впервые после просмотра этого урока .

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.sendNotificationToTopic = functions.firestore.document('chats/{roomid}/messages/{uid}').onWrite(async(event)=>{
    let content = event.after.get('message')
    var message ={
        notification: {
            title: 'You have an unread message',
            body: content,
        },
        topic:'namelesscoder',
    };
});

Во время тестирования функции log показывает, что функция работает должным образом без какого-либо ошибки, однако мое устройство фактически не получает уведомление. Это из-за того, как я объявил структуру базы данных? Путь в коде, упомянутом выше, - это место, где хранятся мои сообщения чата. enter image description here enter image description here

1 Ответ

0 голосов
/ 09 февраля 2020

Эта функция будет отправлять уведомления pu sh на topi c (группу пользователей, которые подписаны на topi c), а не на конкретного пользователя c. Если вы хотите отправить уведомление группе пользователей, вы можете использовать эту функцию, и ваши пользователи должны быть подписаны на topi c. В этой функции topi c является «namelesscoder», поэтому ваш пользователь должен быть подписан на этот topi c.

Если вы используете android, напишите следующий код, чтобы подписаться на topi c 'namelesscoder'

FirebaseMessaging.getInstance().subscribeToTopic("namelesscoder")
   .addOnCompleteListener(new OnCompleteListener<Void>() {
          @Override
          public void onComplete(@NonNull Task<Void> task) {
             String msg = "subscribed to topic nameless coder.";
             if (!task.isSuccessful()) {
                 msg = "Failed to subscribe to topic";
             }
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
      }
});

Если вы хотите отправить уведомление указанному c пользователю, вы должны отправить его на токен FCM.

...