android - 如何通过 Firebase 云消息发送推送通知(快速入门)?
问题描述
我试图了解 FCM(推送通知)的工作原理......这与 Web 应用程序非常不同......
我做了什么→</p>
- 在 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)当我尝试New notification
在firebase控制台中创建时,这里没有我可以插入设备令牌的字段。这里是Target → Target user if → App → com.google.firebase.quickstart.fcm
。那么我是否需要知道设备令牌,或者我可以向所有在其设备上安装了我的应用程序的客户端发送通知?
b)当我尝试发送有关weather
主题的消息时,什么也没有发生。即使我按下按钮Subscribe to weather
(在手册中你可能会发现Subscribe to News
,但实际版本的按钮是weather
) - 有什么方法可以检查我的设备是否在 FCM 中注册(尤其是在服务器端)?
- 在大量设备(例如 50000 台)上以最小的时间延迟发送相同内容的最有效方法是什么?尝试遍历设备令牌(每个请求 1000 个令牌)或使用主题?还有其他方法吗?
- 实际上我的后端是与 FCM 配对的 AWS SNS,所以如果你能回答在 SNS + FCM 的情况下最有效的方法,那就太好了
- 不知道。。。有什么建议吗?我是一名网络开发人员(REST 等),并且对移动应用程序的经验为零
解决方案
1-您需要将当前设备令牌存储在数据库中,然后循环遍历每个设备以发送消息。
主题需要从客户端订阅,使用受限
2 - 您应该将其存储在数据库中,如果 FCM 过期,发送 FCM 将产生错误,您必须将其删除并等待客户端重新发送新令牌
3 - 主题是常见的做法,让每个设备都听一个“全局”主题,但由于 FCM 是为最大输出而不是时间敏感性而设计的,因此存在本地延迟。为此,您将需要专门处理高速消息的外部服务。
4 - 您可以调用云函数来调用其他 Firebase 服务,即使数据库上的其余 API 和 onTrigger 侦听器也是有效的
5 - FCM 很棒,但它不是最好的,因为它是作为通用解决方案创建的。建议组合不同的 CM 服务,特别是如果您有时间敏感的需求。但是当 FCM 是免费的时,它们确实是有代价的。
推荐阅读
- python - StandardScaler 到整个训练数据集或单个折叠以进行交叉验证
- sql - 在 varchar2 中返回多个值
- python - 合并 NumPy 中的相似列,概率向量
- ruby-on-rails - 如何修复捆绑器在 docker 容器中找不到 Rails
- javascript - 如何更新 selenium-webdriver 的版本?
- html - For 循环 HTML Django
- kubernetes - 如何在 Kubernetes 中设置自定义 HTTP 错误
- google-cloud-storage - Firebase 存储 - 通过 Python google-cloud-storage lib 上传 png 图像时出错
- java - 我正在尝试检查 Anagram
- ssh - 无法获取 JupyterLab 链接