📜  node js 发送 fcm - Javascript (1)

📅  最后修改于: 2023-12-03 15:03:11.772000             🧑  作者: Mango

Node.js 发送 FCM

如果你正在构建一个需要向移动设备发送消息的应用程序,Firebase Cloud Messaging(FCM)是一个非常有用的解决方案。这篇文章将向你展示如何使用 Node.js 发送 FCM 消息。

准备工作

在开始之前,你需要先创建一个 Firebase 项目,并在其中为你的应用程序启用 FCM。你还需要安装 firebase-adminaxios 这两个 npm 包。

npm install firebase-admin axios
获取服务帐号密钥

为了向 FCM 发送消息,你需要一个服务帐号密钥。可以通过以下步骤获取该密钥:

  1. 登录 Firebase 控制台网站。
  2. 选择你的项目。
  3. 点击设置图标,然后选择“项目设置”。
  4. 选择“服务帐号”选项卡。
  5. 单击“新建服务帐号”按钮,然后按照步骤创建服务帐号。
  6. 在“权限”选项卡中,为服务帐号提供“Firebase 云消息传递器管理员”角色。
  7. 单击“生成新的私钥”按钮,然后将生成的 JSON 文件保存到项目中。
配置 Firebase
const admin = require('firebase-admin');
const serviceAccount = require('path/to/serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'YOUR_DATABASE_URL'
});

注意,你需要将 path/to/serviceAccountKey.json 替换为你保存服务帐号密钥的实际路径,将 YOUR_DATABASE_URL 替换为你的 Firebase 数据库 URL。

向单个设备发送消息
const message = {
  data: {
    title: 'Hello',
    body: 'World'
  },
  token: 'DEVICE_REGISTRATION_TOKEN'
};

admin.messaging().send(message)
  .then((response) => {
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

DEVICE_REGISTRATION_TOKEN 替换为你要发送消息到的设备的注册令牌。在上面的代码中,我们向设备发送一个具有标题和正文的数据消息。

向多个设备发送消息
const message = {
  data: {
    title: 'Hello',
    body: 'World'
  },
  tokens: ['DEVICE_REGISTRATION_TOKEN_1', 'DEVICE_REGISTRATION_TOKEN_2']
};

admin.messaging().sendMulticast(message)
  .then((response) => {
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
  });

使用 tokens 属性代替 token,并将设备注册令牌数组放在其中。在上面的代码中,我们向两个设备发送具有标题和正文的消息。

发送 HTTP 请求
const message = {
  data: {
    title: 'Hello',
    body: 'World'
  },
  token: 'DEVICE_REGISTRATION_TOKEN'
};

axios.post('https://fcm.googleapis.com/v1/projects/YOUR_PROJECT_ID/messages:send', {
  message: message
}, {
  headers: {
    'Authorization': 'Bearer ' + YOUR_ACCESS_TOKEN,
    'Content-Type': 'application/json'
  }
})
  .then((response) => {
    console.log('Successfully sent message:', response.data);
  })
  .catch((error) => {
    console.log('Error sending message:', error.response.data);
  });

YOUR_PROJECT_ID 替换为你的 Firebase 项目 ID,将 YOUR_ACCESS_TOKEN 替换为你在 Firebase 控制台网站中生成的访问令牌。在上面的代码中,我们向一个设备发送具有标题和正文的数据消息,对于此请求,我们使用了 Axios 库处理发送 POST 请求。

结论

在本文中,我们介绍了如何使用 Node.js 发送 FCM 消息。在使用 FCM 时,可以采用多种方法来向设备发送消息,如通过 Firebase-admin 库提供的 API 或通过 HTTP 请求使用类似 Axios 库的第三方库。