📅  最后修改于: 2023-12-03 15:03:11.772000             🧑  作者: Mango
如果你正在构建一个需要向移动设备发送消息的应用程序,Firebase Cloud Messaging(FCM)是一个非常有用的解决方案。这篇文章将向你展示如何使用 Node.js 发送 FCM 消息。
在开始之前,你需要先创建一个 Firebase 项目,并在其中为你的应用程序启用 FCM。你还需要安装 firebase-admin 和 axios 这两个 npm 包。
npm install firebase-admin axios
为了向 FCM 发送消息,你需要一个服务帐号密钥。可以通过以下步骤获取该密钥:
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
,并将设备注册令牌数组放在其中。在上面的代码中,我们向两个设备发送具有标题和正文的消息。
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 库的第三方库。