Firebase 推送通知如何发送到设备

Posted

技术标签:

【中文标题】Firebase 推送通知如何发送到设备【英文标题】:How Firebase Push Notification is send to device 【发布时间】:2019-04-19 21:49:22 【问题描述】:

我试图弄清楚 Firebase 如何连接到特定设备并向其发送消息。我现在如何使用 Firebase 并从我的后端服务器向注册设备发送通知,但我不知道它在内部是如何工作的。 firebase 服务器是否使用设备和服务器之间的持久连接?它使用什么样的技术?

目前我最感兴趣的是 android 设备,以及即使有后台任务限制,firebase 如何唤醒设备。

【问题讨论】:

【参考方案1】:

FCM 能够唤醒设备,因为消息实际上是由 Play 服务附带的软件组件接收的,该服务以提升的权限运行。 Play 服务可以选择唤醒设备并将消息传递给目标应用。

在正常情况下,Play 服务中的 FCM 软件会为其后端保持一个持久的套接字连接。如果它得到连接被丢弃,它有逻辑重新建立连接而不会过多地消耗电池。

【讨论】:

因此,FCM 具有更高的权限,因为 Google Play 服务和 Firebase 都归 Google 所有,但是像 Messenger/WhatsApp 这样的应用呢?消息由这些应用程序实时传递。 来自 WhatsApp/Messenger 的所有消息都将收到 FCM 提供的推送通知。因此,如果设备可以访问 FCM,它可以在 firebase 服务器中获得等待设备中安装的所有应用程序的推送通知。 Messenger/WhatsApp 在后台使用 FCM?我理解正确吗?【参考方案2】:

我试图解释 GCM 在my answer here 中的工作原理。 Firebase的内部工作原理在我看来是类似的。

当您安装已设置 Firebase SDK 的应用程序时,它会从 Google 服务器获取推送注册 ID。通常,您也将推送注册 ID 保存在您的服务器中。因此,当存在发送推送通知的情况时,您的服务器会使用此推送注册 ID 向 Firebase 服务器生成请求,以向您的设备发送推送通知。

现在让我们也考虑一下接收器部分(即您的设备)。在我看来,在较新版本的 Android 中,JobScheduler 允许重复检查来自 Firebase 服务器的推送消息,如果有,设备会通知相应的应用程序,然后应用程序会生成推送通知。

希望有帮助!

【讨论】:

以上是关于Firebase 推送通知如何发送到设备的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 从我的服务器发送 iOS 推送通知?

如何在 iOS 中使用 Google Firebase 向特定用户发送推送通知?

您如何向从应用程序本身订阅主题的用户发送 Firebase 推送通知

如何向 ios 应用程序发送 Firebase 推送通知

如何使用 FCM 和 Flutter(一个到另一个设备)发送推送通知?

Firebase 会惩罚失败的推送通知吗?