在for循环中发送时,并非在所有设备上都收到fcm推送通知

时间:2018-10-30 18:42:07

标签: node.js firebase push-notification firebase-cloud-messaging

我正在使用fcm向移动设备(包括ios和android)发送推送通知。我在Firestore中有一张桌子,上面有注册用户的设备ID。我遍历该表,并将推送通知发送到移动设备。我正在使用以下代码进行推送通知。

const sendNotification = (deviceId, userId) => {
  return new Promise((resolve, reject) => {
    let message = {
      notification: {
        title: 'TITLE',
        body: `notification is sent to ${userId}`
      }
    };
    let options = {
      contentAvailable: true,
      priority: "high",
      timeToLive: 60 * 60 * 24
    };
    firebase.messaging().sendToDevice(deviceId, message, options)
      .then(function (response) {
        resolve({
          message: `Successfully sent message`
        })
        console.log(`notification sent to ${userId}`);
      })
      .catch(function (error) {
        reject({
          message: "There is an issue sending push notification"
        })
        console.log('Error sending message:', error);
      });

  });
};

问题是通知已成功发送到所有设备,但并非所有设备都收到通知。有时它是在设备A上交付的,当我重新运行代码时,推送通知没有交付到该设备。 有时在所有设备上都会收到推送通知,有时没有设备会收到任何推送通知。 我在for循环中调用sendNotification,该循环基本上是对表中存在的文档进行迭代,并且每个文档都包含该用户的用户ID和该用户的移动设备的设备ID。

0 个答案:

没有答案