如何通过 Firebase 云消息发送推送通知(快速入门)?

Posted

技术标签:

【中文标题】如何通过 Firebase 云消息发送推送通知(快速入门)?【英文标题】:how to send push notification via firebase cloud messaging (quickstart)? 【发布时间】:2021-09-02 07:31:27 【问题描述】:

我试图了解 FCM(推送通知)的工作原理...这与 Web 应用程序非常不同...

我做了什么→

    在 Firebase 中注册新项目 添加Appcom.google.firebase.quickstart.fcm并下载google-services.jsonandroid 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 云消息发送推送通知(快速入门)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 云消息设置图像?

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知

python Python脚本通过Firebase云消息传递将可升级包的推送通知发送到iOS / Android。

Firebase 云功能不发送异步推送通知

一次向多个(超过 3 个)主题发送 Firebase 云消息(又名推送通知)

Firebase 云消息传递如何在 Android 上运行