如何无需Firebase控制台创建FCM周期性通知?突破数量限制
手动搭建FCM周期性定向通知方案
核心思路
绕开FCM控制台最多10个周期性通知的限制,通过后端服务+FCM API组合,自定义实现受众筛选逻辑、周期性触发规则,完全掌控推送的定向维度和频率。
具体实现步骤
1. 维护用户核心数据
在后端数据库中存储用于定向筛选的关键用户信息:
- 用户唯一ID与关联的FCM
registration_token - 用户属性(地域、会员等级、偏好标签等)
- 最后互动时间戳(如最后打开APP、点击通知的时间)
- 令牌有效性标记(定期更新失效令牌)
2. 编写受众筛选逻辑
根据业务需求编写筛选规则,以「推送2天未活跃用户」为例,示例SQL查询:
SELECT registration_token FROM users WHERE last_interaction_time < UNIX_TIMESTAMP() - 86400*2 AND is_active = 1;
可自由组合多维度条件,比如「2天未活跃的VIP用户」「某地域3天未互动用户」等。
3. 配置周期性触发任务
用后端定时工具触发推送逻辑:
- 后端框架自带定时功能(如Spring的
@Scheduled、Node.js的node-schedule) - 系统级定时服务(如Linux
cron、云函数定时触发器)
根据需求设定触发频率,比如每天凌晨执行一次未活跃用户推送。
4. 调用FCM API发送通知
通过FCM HTTP API批量推送,示例伪代码:
import requests FCM_SERVER_KEY = "你的服务器密钥" FCM_API_URL = "https://fcm.googleapis.com/fcm/send" def send_batch_notification(tokens, title, body): payload = { "registration_ids": tokens, "notification": { "title": title, "body": body }, "data": {"type": "re-engagement"} } headers = { "Authorization": f"key={FCM_SERVER_KEY}", "Content-Type": "application/json" } response = requests.post(FCM_API_URL, json=payload, headers=headers) return response.json() # 调用示例:传入筛选出的令牌列表 inactive_user_tokens = ["token_xxx", "token_yyy", ...] send_batch_notification(inactive_user_tokens, "好久不见!", "快来看看最新内容~")
5. 处理推送反馈
- 解析FCM返回的响应,标记失效的
registration_token,后续不再推送 - 记录推送日志,统计送达率、点击率等效果数据
注意事项
- 遵守FCM发送限流规则,大量令牌建议分批次推送
- 确保用户数据处理符合隐私合规要求
- 定期测试筛选逻辑和推送流程,避免漏推或误推
内容的提问来源于stack exchange,提问作者Kai Tera
相关产品推荐
相关产品推荐

