GCM 连接服务器如何将消息发送到 Android 设备?

How GCM connection Servers sends messages to an Android device?

我正在阅读 Google 云消息传递 (GCM)。 GCM 连接服务器收到的推送通知被发送到启用 GCM 的 Android 设备。我假设它在内部使用设备 ID(然后使用 ARP 协议从 MAC 解析为 IP)发送推送通知。 GCM 在内部使用哪种协议来传递通知?如果是 TCP/IP 那么它如何解析设备的 IP(鉴于用户切换 wifi 网络和移动数据,这不是唯一的)。

谁能帮我理解从 GCM 到客户端的通信?

  • GCM 通过 Google Play 服务工作(没有 Google Play 服务就没有 GCM)
  • 设备通过端口 5228TCP 连接到 Google Play 服务(443 作为回退)
  • 设备在移动设备上每 28 分钟发送一个 心跳数据包到 Google Play 服务,在 wifi 上每 15 分钟发送一次
  • 如果设备网络状态发生变化,设备必须重新建立到 Google Play 服务的 TCP 连接,apparently can lead to problems
  • 在设备上拨号*#*#426#*#*可以查看连接状态、心跳间隔、连接地址和端口等

您可以在 this post on Google Product Forums 中找到更多信息。