NodeJS 如何防止Firebase Cloud Messaging发送重复通知

tzdcorbm  于 2023-04-20  发布在  Node.js
关注(0)|答案(1)|浏览(143)

我正在使用Firebase Cloud Messaging(FCM)向Android设备发送PWA的提醒通知,提醒在正确的时间发送,但它以不同的格式发送了2次通知(屏幕截图:https://i.stack.imgur.com/Hywao.jpg)。
我使用Firebase函数在正确的时间触发通知。然而,我用NodeJS编写的函数似乎没有问题,因为当我在控制台中测试FCM活动时,我也收到了2个通知而不是1个。
函数日志似乎只发送1个通知。

if (new Date(currentTime).getHours() === new Date(reminderDate).getHours() && new Date(currentTime).getMinutes() === new Date(reminderDate).getMinutes()) {
                    const devicetoken = user.data().deviceToken;
                    const userId = user.id;

                    console.log(`Sending intake notification to user ${userId}`);

                    const payload = {
                        notification: {
                            title: "Erinnerung Tabletteneinnahme",
                            body: "test",
                            image: "https://firebasestorage.googleapis.com/v0/b/lilly-c51cf.appspot.com/o/FCMImages%2Ficon.png?alt=media&token=94b9d38c-c141-4aa9-8cb5-1cf70eb165ca",
                            icon: "https://firebasestorage.googleapis.com/v0/b/lilly-c51cf.appspot.com/o/FCMImages%2Ficon.png?alt=media&token=94b9d38c-c141-4aa9-8cb5-1cf70eb165ca",
                        }
                    };

                    admin.messaging().sendToDevice(devicetoken, payload);
                }
ccrfmcuu

ccrfmcuu1#

对于message payload,如果您发送notification属性,firebase messaging sw将自动显示通知。
如果你使用data属性,那么firebase消息软件将不会自动显示通知,你有所有的控制权。
基本上,将构建有效负载的方式更改为如下所示:

// Notification details.
      const payload = {
        data: {
          title: 'title',
          body: `a body thingy`,
          icon: 'http://someicon.com/someicon.png',
        },
      };

      // Send to device
      await admin.messaging().sendToDevice(devicetoken, payload);

P.S:看来sendToDevice()现在已经被弃用了

相关问题