关于 firebase:使用 GCM 进行时间关键操作?

Time critical operations with GCM?

我即将在我的应用程序中实现 GCM,但我无法在文档中找到以下问题的答案:

我的应用程序需要在服务器中交付时间紧迫的更改。

  • 即使设备处于睡眠状态,GCM 是否会立即(无延迟)发送通知?

    • 通知会立即唤醒设备吗?
  • 大约有 2-3 个,每秒最多 20 个通知,这会导致问题吗?

  • 满足这些要求的服务会产生任何费用吗?


即使设备处于睡眠状态,GCM 是否会立即(无延迟)发送通知?

是的,您可以将消息的优先级设置为高优先级。

GCM 尝试立即传递 high priority 消息,允许 GCM 服务在可能的情况下 wake a sleeping device 并打开与您的应用服务器的网络连接。例如,具有即时消息、聊天或语音呼叫警报的应用程序通常需要打开网络连接并确保 GCM 将消息及时传递到设备。仅当消息是时间关键的并且需要用户立即交互时才设置 high priority,并且要注意将消息设置为 high priority 与正常优先级消息相比更会消耗电池电量。

通知会立即唤醒设备吗?

上面的描述已经回答了:)

大约有 2-3 个,每秒最多 20 个通知,这会导致问题吗?

我认为这个 SO 问题可以帮助你解决这个问题。

  • gcm 一次可以接收多少个设备

  • Android 推送通知 (GCM),是否有每日限制?

有这些要求的服务会产生任何费用吗?

来自 Google 云消息:概述

Google Cloud Messaging (GCM) 是一项免费服务,可让开发人员在服务器和客户端应用之间发送消息。这包括从服务器到客户端应用程序的下游消息,以及从客户端应用程序到服务器的上游消息。

Just take NOTE that Firebase Cloud Messaging
(FCM) is the new
version of GCM. It inherits the reliable and scalable GCM
infrastructure, plus new features! If you
are integrating messaging in a new app, start with FCM. GCM users are
strongly recommended to upgrade to FCM, in order to benefit from new
FCM features today and in the future.


实际上,由于可靠性问题 [1] [2] [3],根本不建议将 GCM 用于时间关键型操作。通知可能会延迟、受速率限制、在传输过程中丢失或以与发送时不同的顺序到达。

您可以使用其他推送通知网关来代替,它们对于您的时间关键型操作需求来说更加可靠。

Pushy (https://pushy.me/) 使用自己的后台 MQTT 连接,为独立于 GCM 工作的 Android 应用程序提供高度可靠的推送通知网关。

全面披露:我创立了 Pushy。