Невозможно отправить уведомление pu sh на устройство android с помощью облачных сообщений Firebase - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь отправить уведомление на устройство android, использующее облачные сообщения firebase.

Ниже sendNotification - облачная функция, которую я развернул на firebase:

const sendNotification = (owner_uid: any, type: any) => {
    return new Promise((resolve, reject) => {
        admin.firestore().collection('users').doc(owner_uid).get().then((doc) => {
            if (doc.exists && doc.data()?.token) {
                if (type === 'new_comment') {

                    console.log('NEW COMMENT');
                    console.log('TOKEN: ' + doc.data()?.token);

                    admin.messaging().sendToDevice(doc.data()?.token, {
                        data: {
                            title: 'A new comment has been made on your post',
                        }
                    }).then((sent) => {
                        console.log("SENT COUNT " + sent.successCount);
                        console.log('SENT APPARENTLY')
                        resolve(sent);
                    });
                }
            }
        });
    });
}

И вот где я вызываю эту функцию:

export const updateCommentsCount = functions.firestore.document('comments/{commentId}').onCreate(async (event) => {
    const data = event.data();

    const postId = data?.post;

    const doc = await admin.firestore().collection('posts').doc(postId).get();

    if (doc.exists) {
        let commentsCount = doc.data()?.commentsCount || 0;

        commentsCount++;

        await admin.firestore().collection('posts').doc(postId).update({
            'commentsCount': commentsCount
        })

        return sendNotification(doc.data()?.owner, 'new_comment');
    } else {
        return false;
    }
})

Однако я не получаю уведомление на устройстве android.

А вот функция облака логи, когда я оставляю комментарий:

fire_log

Может кто-нибудь сказать, пожалуйста, почему происходит, и как это можно решить? Я могу показать дополнительный код, если требуется.

1 Ответ

0 голосов
/ 19 марта 2020

Мне удалось найти решение.

В методе отправки уведомлений, sendToDevice , я обновил ключ «данные», указав «уведомление», и теперь уведомление отправляется автоматически. & отображается на устройстве исходного пользователя.

Вот обновленное

admin.messaging().sendToDevice(doc.data()?.token, {
    notification: {
        title: 'A new comment has been made on your post',
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...