如何通过云函数使用Firebase Cloud Messaging发送通知及模块引入问题
引入路径适配方案
情况1:使用 v10.0.0 及以上版本的 firebase-admin
const { getMessaging } = require("firebase-admin/messaging");是正确语法,运行报错首先排查两个点:
- 项目依赖中
firebase-admin版本是否满足要求,执行npm install firebase-admin@latest升级到最新稳定版即可解决版本不匹配问题 - 确保在调用messaging相关方法前,已经完成admin SDK的初始化:
const { initializeApp } = require('firebase-admin/app'); const { getMessaging } = require('firebase-admin/messaging'); initializeApp(); const messaging = getMessaging();
情况2:使用 v10 以下版本的 firebase-admin
低版本不支持子路径导出,需要从全局admin实例上获取messaging服务:
const admin = require('firebase-admin'); admin.initializeApp(); const messaging = admin.messaging();
发送消息能力归属说明
Cloud Functions SDK仅用于定义云函数的触发规则(比如HTTP触发、Pub/Sub触发、数据库事件触发等),本身不提供FCM消息发送能力,该能力完全由firebase-admin SDK提供,不需要在Cloud Functions SDK文档中查找相关方法。
admin.messaging()实例下常用的发送方法包括:
send(message):发送单条消息,支持指定设备token、订阅主题、发送条件三种目标类型sendMulticast(message):向最多500个设备token发送相同内容的消息sendAll(messages):批量发送最多500条自定义内容的消息
完整云函数示例
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); // 示例:HTTP触发的FCM通知发送接口 exports.sendNotification = functions.https.onRequest(async (req, res) => { const { fcmToken, title, content } = req.body; try { const result = await admin.messaging().send({ notification: { title, body: content }, token: fcmToken }); res.status(200).json({ code: 0, msg: '发送成功', messageId: result }); } catch (e) { res.status(500).json({ code: 1, msg: '发送失败', error: e.message }); } });
内容的提问来源于stack exchange,提问作者citykid
相关产品推荐
相关产品推荐

