Получение уведомления дважды для одного и того же события в сообщениях чата - PullRequest
0 голосов
/ 18 июня 2020

Я использую приведенный ниже код для уведомлений в чате, он выполняется успешно, но дважды выполняет уведомление для одного и того же события, которое должно произойти только один раз для одного события. Могу ли я узнать, что я делаю неправильно в приведенном ниже коде для облачной функции firebase, реализованной с базой данных firestore в приложении flutter

exports.sendNotification = functions.firestore.document("messageRoom/{message_room_id}/messages/{messageID}").onWrite((change, context) => {
    const idTo = context.params.idTo;
    const message_room_id = context.params.message_room_id;
    const messageID = context.params.messageID;


    return admin.firestore().collection('messageRoom').doc(message_room_id).collection('messages').doc(messageID).get().then(queryResult => {

            const idFrom = queryResult.data().idFrom;
            const to_token_id = queryResult.data().to_token_id;
            const idTo = queryResult.data().idTo;

            console.log("User id " + idTo + "   | Notification id " + "notification_id" + "  | Token ID is : " + to_token_id + " | from user id  " + idFrom);

            var payload = {
                notification: {
                    title: 'Chat Message',
                    body: "New Message",
                    icon: 'default',
                    sound: 'default'
                },
                data: {
                    click_action: 'FLUTTER_NOTIFICATION_CLICK',
                    groupChatId: messageID,
                    category: 'default'
                }
            };

            return admin.messaging().sendToDevice(to_token_id, payload).then(result => {
                console.log("Notification Sent chat notification");
                return null;
            });
        }
    );
});

1 Ответ

2 голосов
/ 18 июня 2020

Я просто подумал, что это стоит создания ответа, основанного на разговоре Санцио и Джонни.

В такой ситуации первая мысль, что onWrite listener вызывается дважды. Поэтому сначала убедитесь, что запись в messageRoom/{message_room_id}/messages/{messageID} выполняется один раз, будь то с устройства или другой облачной функции.

На самом деле, в этом случае оказалось, что запись велась из двух разных мест.

Надеюсь, это поможет любому, кто столкнется с этим в будущем :)

...