javascript - Firebase 管理 SDK FCM 错误 需要主题、 token 或条件之一

标签 javascript node.js firebase firebase-cloud-messaging firebase-admin

我正在修复出现的错误消息,但它以前也可以工作。我正在使用多个 token 发送 FCM 通知,但收到以下错误

0|api      | 2020-2-11 13:26:26   [ExceptionsHandler] Exactly one of topic, token or condition is required
0|api      |  +542752ms
0|api      | Error: Exactly one of topic, token or condition is required
0|api      |     at FirebaseMessagingError.FirebaseError [as constructor] (/var/www/tokee-api-new/node_modules/firebase-admin/lib/utils/error.js:42:28)
0|api      |     at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/var/www/tokee-api-new/node_modules/firebase-admin/lib/utils/error.js:88:28)
0|api      |     at new FirebaseMessagingError (/var/www/tokee-api-new/node_modules/firebase-admin/lib/utils/error.js:254:16)        0|api      |     at Object.validateMessage (/var/www/tokee-api-new/node_modules/firebase-admin/lib/messaging/messaging-types.js:46:15)
0|api      |     at /var/www/tokee-api-new/node_modules/firebase-admin/lib/messaging/messaging.js:265:31
0|api      |     at Array.map (<anonymous>)
0|api      |     at Messaging.sendAll (/var/www/tokee-api-new/node_modules/firebase-admin/lib/messaging/messaging.js:264:29)
0|api      |     at Messaging.sendMulticast (/var/www/tokee-api-new/node_modules/firebase-admin/lib/messaging/messaging.js:313:21)   0|api      |     at userChunks.forEach.userChunk (/var/www/tokee-api-new/src/modules/common/firebase/firebase.service.ts:154:42)     0|api      |     at Array.forEach (<anonymous>)
0|api      |     at FCMService.<anonymous> (/var/www/tokee-api-new/src/modules/common/firebase/firebase.service.ts:142:16)
0|api      |     at Generator.next (<anonymous>)
0|api      |     at /var/www/tokee-api-new/dist/src/modules/common/firebase/firebase.service.js:13:71
0|api      |     at new Promise (<anonymous>)
0|api      |     at __awaiter (/var/www/tokee-api-new/dist/src/modules/common/firebase/firebase.service.js:9:12)
0|api      |     at FCMService.sendToMany (/var/www/tokee-api-new/dist/src/modules/common/firebase/firebase.service.js:123:16)       0|api      |     at AdminNotificationController.<anonymous> (/var/www/tokee-api-new/src/modules/notification/admin-notification.controller.ts:65:42)
0|api      |     at Generator.next (<anonymous>)
0|api      |     at fulfilled (/var/www/tokee-api-new/dist/src/modules/notification/admin-notification.controller.js:16:58)
0|api      |     at <anonymous> 

产生错误的代码:

async sendToMany(users: User[], notification: VSendNotification, title = 'Title', lowPriority = false) {
    // We split emails into arrays of max. 100 size because of the limitation with FCM
    const userChunks = _.chunk(users, 100);
    const promises = [];
    userChunks.forEach(userChunk => {
      const msg: admin.messaging.MulticastMessage = {
        notification: {
          title,
          body: notification.body
        },
        tokens: userChunk.map(user => user.firebaseToken),
        android: {
          priority: lowPriority ? 'normal' : 'high'
        }
      };
      promises.push(this.app.messaging().sendMulticast(msg));
    });
    const result = await Promise.all(promises);
    let accepted = 0;
    let rejected = 0;
    result.forEach(response => {
      accepted += response.successCount;
      rejected += response.failureCount;
    });

    return { accepted, rejected, notification };
  }
}

思考一下可能出了什么问题?

最佳答案

解决方案 - 避免向 Firebase 发送空的 fcm token 。

我找到了解决方案。我列出了所有的 firebase token ,并且我的数据库中有一些空 token ,这是主要问题。

当我们发送空的 fcm token 时,Firebase 会给出以下错误

Exactly one of topic, token or condition is required

关于javascript - Firebase 管理 SDK FCM 错误 需要主题、 token 或条件之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60170040/

相关文章:

ios - CloudKit/火力地堡 : is it possible to send not only push when a record changes but also mail?

android - Android 推送的 FCM 消息中的 `ttl` 和 `time_to_live` 属性有什么区别?

javascript - Bootstrap Modal 不工作但 modal-sm 是

javascript - 根据复选框检查和设置 url 变量

javascript - 如何在此递归 Javascript 中将此 D3.js 元素发送到另一个元素的点击函数

node.js - 心跳传感器使用串口输出缓冲区数据 - Javascript arduino Nodejs

javascript - querySelectorAll 是在多个图表中选择元素的好方法吗?

javascript - 在 Meteor 中获取被点击的元素?

node.js - 如何调试 Angular 通用?

java - 是否可以仅通过数据负载 FCM 通知来启动特定 Activity ?