设备未收到API发送的Firebase通知

jk9hmnmh  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(185)

我尝试通过cron基于在我的服务器上运行的业务逻辑发送通知。

    • 问题**

通知未显示在设备上。

    • 说明**

我使用的是firebase管理节点包。
我的代码如下所示

import admin from "firebase-admin";

import serviceAccount from "../../firebase-admin.json" assert { type: 'json' };
import { getMessaging } from 'firebase-admin/messaging';

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

...

console.log(message);
await getMessaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
     console.log('Error sending message:', error);
  });

我的日志输出如下

{
  notification: {
    title: 'This is a string',
    body: 'This is another string'
  },
  token: 'aLphaNumeric:reallyLongAlphaNumericWithDashesAndUnderscores'
}
Successfully sent message: projects/<project-name>/messages/<id>

我所看到的一切都表明这应该被发送!

a6b3iqyw

a6b3iqyw1#

sendMulticast和Admin FCM API允许您将消息多播到设备注册令牌列表中。每次调用最多可以指定500个设备注册令牌。
sendMulticast接受2个参数作为输入,第一个是通知,包含消息的标题和正文。另一个参数是数组类型的fcmTokens,因此即使只有一个fcmToken,您也必须将该参数作为数组传递

//Import the file where you have imported the service file.
const adminApp = require("../firebase/firebaseConfig");
const notificationToAll = (title, body, tokens) => {
var notibody = {
  notification: {
    title: title,
    body: body,
  },
  tokens: tokens,
};
return new Promise((resolve, reject) => {
  adminApp
    .messaging()
    .sendMulticast(notibody)
    .then((response) => {
      console.log(response.responses);
      if (response.responses[0].error != undefined) {
        console.log(JSON.stringify(response.responses[0].error));
      }
      resolve(response);
    })
    .catch((error) => {
      console.log(JSON.stringify(error));
      reject(error);
    });
});
};

module.exports = notificationToAll;

app.js

const notificationToAll = require("./helper/notification");
notificationToAll(
  "This is a string",
  `This is another string`,
  ["aLphaNumeric:reallyLongAlphaNumericWithDashesAndUnderscores"]
)

这是经过测试的代码,在实际环境中工作。

相关问题