我试图了解FCM(推送通知(是如何工作的。。。这与Web应用程序非常不同。。。
我做了什么→
- 在Firebase中注册新项目
- 添加应用程序
com.google.firebase.quickstart.fcm
并下载google-services.json
- 在Android Studio中使用
google-services.json
构建应用程序 - 在我的设备上安装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个令牌(还是使用主题?还有其他办法吗
- 事实上,我的后端是AWS SNS和FCM,所以如果你能回答在SNS+FCM的情况下最有效的方法,那将是非常棒的
- 我不知道。。。有什么建议吗?我是一名网络开发人员(REST等(,对移动应用程序没有任何经验
1-您需要将当前设备令牌存储在数据库中,然后循环遍历每个令牌以发送消息。
主题需要从客户端订阅,并且使用有限
2-你应该将其存储在数据库中,如果FCM过期,发送它将产生错误,你必须删除并等待客户端重新发送新的令牌
3-主题是常见的做法,让每个设备都听一个"全局"主题,但有一个本地延迟,因为FCM是为最大输出而设计的,而不是时间敏感性。为此,您将需要专门处理高速消息的外部服务。
4-您可以调用云函数来调用其他firebase服务,甚至数据库上的其余API和onTrigger侦听器都是有效的
5-FCM很棒,但它不是最好的,因为它是作为一个通用解决方案创建的。建议使用不同CM服务的组合,特别是在您有时间敏感需求的情况下。但当FCM免费时,它们确实是有代价的。