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

如何通过Firebase Functions向Firebase Analytics受众推送通知?

很高兴看到你已经搞定了基础的FCM推送!要给Firebase Analytics受众发通知,核心是结合Firebase的受众管理和云函数,下面我一步步给你讲清楚怎么做:

给Firebase Analytics受众推送FCM通知的实现步骤

1. 先在Firebase控制台配置Analytics受众

  • 打开Firebase控制台,进入Analytics > 受众页面
  • 创建新受众:根据你的需求设置筛选规则(比如过去7天打开过APP的用户、完成特定事件的用户等)
  • 受众创建完成后,点击受众卡片的三个点 > 关联到FCM主题,给这个主题起个好记的名字(比如active-users-7d)—— 之后符合受众条件的用户会自动订阅这个主题,不用手动处理订阅逻辑

2. 修改云函数代码,向关联的主题推送通知

既然已经把Analytics受众和FCM主题绑定,只需要调整你原来的函数,把推送目标改成主题即可。下面是修复并优化后的完整代码:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

// 保留你原来的随机数生成逻辑
function getRandomInt(max) {
  return Math.floor(Math.random() * max);
}

exports.sendAnalyticsAudienceNotif = functions.https.onRequest(async (request, response) => {
  try {
    const mySecretNumber = getRandomInt(147);
    const payload = {
      notification: {
        title: `You got a new Message`,
        body: `My highest break ${mySecretNumber}`,
        badge: mySecretNumber.toString(), // 修复了你原来的拼写错误:toStri -> toString()
        sound: 'default' // 可选:添加通知音效,提升用户感知
      },
      // 可选:添加自定义数据字段,供APP后续处理
      data: {
        breakNumber: mySecretNumber.toString(),
        notificationType: 'high-break'
      }
    };

    // 替换成你关联受众的FCM主题名称
    const targetTopic = 'active-users-7d';
    // 向主题发送通知
    const sendResult = await admin.messaging().sendToTopic(targetTopic, payload);
    
    console.log(`通知发送成功:${sendResult}`);
    response.status(200).send(`已向受众推送通知!返回结果:${JSON.stringify(sendResult)}`);
  } catch (error) {
    console.error('通知发送失败:', error);
    response.status(500).send(`推送失败:${error.message}`);
  }
});

3. 进阶方案:直接用受众条件推送(无需主题)

如果你不想依赖主题关联,也可以直接使用Analytics受众的条件表达式推送:

  • 在Firebase控制台的Analytics受众页面,点击查看条件,复制对应的FCM条件表达式(比如analytics:user_properties.active_days > 7)
  • 把代码里的sendToTopic替换成sendToCondition,示例:
const audienceCondition = "analytics:user_properties.active_days > 7";
const sendResult = await admin.messaging().sendToCondition(audienceCondition, payload);

不过这种方式需要注意条件表达式的语法正确性,且受众规则修改后要同步更新代码,所以关联主题的方式更灵活易维护。

几个关键注意事项

  • 确保你的Firebase Admin SDK是最新版本,避免兼容性问题:可以运行npm update firebase-admin更新
  • 通知的badge字段必须是字符串类型,你原来的代码里toStri是拼写错误,一定要修正
  • 测试时建议先创建一个小范围的测试受众(比如仅包含你的测试账号),避免误推给大量用户

内容的提问来源于stack exchange,提问作者HixField

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:37:03