You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过云函数使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:45:04