Firebase Cloud Functions(云函数)是 Firebase 提供的无服务器计算服务,允许开发者在云端运行后端代码,无需管理服务器基础设施。结合 Firebase Cloud Messaging (FCM),可以通过云函数在特定事件(如数据库变更、用户注册等)触发时自动发送推送通知。
确保已安装 Firebase CLI 并初始化项目:
npm install -g firebase-tools
firebase login
firebase init functions
在 functions
目录下安装 firebase-admin
:
cd functions
npm install firebase-admin
以下是一个示例代码,当 Firestore 文档创建时发送推送通知:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.sendNotificationOnNewPost = functions.firestore
.document('posts/{postId}')
.onCreate(async (snapshot, context) => {
const postData = snapshot.data();
const userId = postData.userId;
// 获取用户的 FCM 令牌(假设存储在 Firestore 的 'users' 集合中)
const userDoc = await admin.firestore().doc(`users/${userId}`).get();
const fcmToken = userDoc.data().fcmToken;
if (!fcmToken) {
console.log('No FCM token found for user:', userId);
return null;
}
// 构造通知消息
const message = {
notification: {
title: 'New Post',
body: `A new post was created: ${postData.title}`,
},
token: fcmToken,
};
// 发送通知
try {
await admin.messaging().send(message);
console.log('Notification sent successfully');
} catch (error) {
console.error('Error sending notification:', error);
}
});
firebase deploy --only functions
firebase-admin
或服务账号缺少权限。admin.initializeApp()
已调用,且服务账号具有 cloudmessaging.messages.create
权限。topic
或 condition
发送给多设备。Promise.all
批量发送通知。