如何通过 Firebase 云消息发送推送通知(快速入门)?
Posted
技术标签:
【中文标题】如何通过 Firebase 云消息发送推送通知(快速入门)?【英文标题】:how to send push notification via firebase cloud messaging (quickstart)? 【发布时间】:2021-09-02 07:31:27 【问题描述】:我试图了解 FCM(推送通知)的工作原理...这与 Web 应用程序非常不同...
我做了什么→
-
在 Firebase 中注册新项目
添加App
com.google.firebase.quickstart.fcm
并下载google-services.json
在 android Studio 中使用 google-services.json
构建 App
在我的设备上安装 APK
转到https://console.firebase.google.com/project/PROJECT_NAME/notification
并发送新通知
然后……什么也没发生
所以我的问题是
-
据我所知,这里有两种发送通知的方法:a) 使用设备令牌并发送直接通知,b) 在客户端订阅设备到主题。
但是
a) 当我尝试在 Firebase 控制台中创建
New notification
时,这里没有我可以插入设备令牌的字段。这里是Target → Target user if → App → com.google.firebase.quickstart.fcm
。那么我是否需要知道设备令牌,或者我可以向所有在其设备上安装了我的应用的客户发送通知?
b) 当我尝试在weather
主题上发送消息时,什么也没有发生。即使我按下按钮Subscribe to weather
(在手册中你可能会找到Subscribe to News
,但实际版本按钮是weather
)
有什么方法可以检查(尤其是在服务器端)我的设备是否在 FCM 中注册?
在大量设备(例如 50000 台)上以最短时间延迟发送相同内容的最有效方法是什么?尝试循环访问设备令牌 (1000 tokens per request) 或使用主题?还有其他方法吗?
实际上我的后端是 AWS SNS 和 FCM,所以如果你能回答在 SNS + FCM 的情况下最有效的方法,那就太棒了
我不知道...有什么建议吗?我是一名网络开发人员(REST 等),对移动应用的经验为零
【问题讨论】:
【参考方案1】:1- 您需要将当前设备令牌存储在数据库中,然后遍历每个设备令牌以发送消息。
主题需要从客户端订阅,使用受限
2 - 您应该将其存储在数据库中,如果 FCM 过期,发送 FCM 将产生错误,您必须将其删除并等待客户端重新发送新令牌
3 - 主题是常见的做法,让每个设备都收听“全局”主题,但存在原生延迟,因为 FCM 旨在实现最大输出而不是时间敏感性。为此,您需要专门处理高速消息的外部服务。
4 - 您可以调用云函数来调用其他 firebase 服务,甚至数据库上的其余 API 和 onTrigger 侦听器也是有效的
5 - FCM 很棒,但并不是最好的,因为它是作为通用解决方案创建的。建议组合不同的 CM 服务,特别是如果您有时间敏感的需求。但在 FCM 是免费的情况下,它们确实是有代价的。
【讨论】:
以上是关于如何通过 Firebase 云消息发送推送通知(快速入门)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知
python Python脚本通过Firebase云消息传递将可升级包的推送通知发送到iOS / Android。