Firebase数据库触发器触发FCM通知的逻辑应写在谷歌云平台还是C#中?
方案选型说明
你提到的两种方案运行逻辑、适用场景完全不同,可根据自身需求选择:
方案1:TypeScript编写云函数触发FCM推送
这是服务端触发方案,所有数据库变更检测、通知推送逻辑都运行在Google Cloud的Firebase Functions节点上,和你的Xamarin客户端完全解耦:
- 优势:
- 不受客户端状态影响,无论用户APP是否在前台运行、是否被后台杀死,只要数据库发生指定变更就会触发推送,不会出现通知漏发
- 不需要客户端维持和Firebase数据库的长连接,大幅减少用户设备的电量、流量消耗
- 推送逻辑统一在服务端管控,不会因为客户端版本不一致出现逻辑差异,也不存在被客户端篡改的风险
- 适用场景:需要用户离线时也能收到通知、需要给批量用户推送通知的场景,90%的推送需求都优先选这个方案
方案2:C#在Xamarin客户端编写监听逻辑
这是客户端触发方案,由你的APP运行时主动和Firebase数据库建立长连接监听数据变更,监听到变更后在本地触发通知:
- 劣势:
- 只要APP被后台杀死、用户未启动APP,就无法监听到数据变更,自然也收不到通知
- 长期维持长连接会额外消耗设备电量和流量
- 适用场景:仅适合用户正在使用APP时才需要触发的实时提示类需求,比如用户停留在实时聊天页时的新消息提示
选型建议
你已经完成了客户端的FCM配置,优先选择第一种方案即可:只需要在Firebase控制台开通Cloud Functions,编写对应数据库路径的OnCreate/OnWrite触发逻辑,触发时调用FCM服务端接口推送通知到目标设备即可,实现成本很低。
内容的提问来源于stack exchange,提问作者PJ.
相关产品推荐
相关产品推荐

