对于某些 android 设备,GCM 消息在 GCM 服务器上停留在“已接受”状态

Posted

技术标签:

【中文标题】对于某些 android 设备,GCM 消息在 GCM 服务器上停留在“已接受”状态【英文标题】:GCM Message gets stuck at "Accepted" state on GCM Server for some android devices 【发布时间】:2016-02-22 09:59:40 【问题描述】:

在某些 android 设备上未收到 GCM 通知。

在 GCM 诊断工具上监控某些设备的注册 id 时,我发现消息卡在“已接受”状态,即消息到达 GCM 服务器但未转发到设备。

【问题讨论】:

【参考方案1】:

您需要确保发送消息的设备已注册。见Registering Client Apps。

此外,您的设备卡在“已接受”状态且未在设备上发送的原因有多种。更多解释请见Lifetime of a message。

如果设备已连接但处于空闲状态,消息仍将立即传递,除非 delay_while_idle 标志设置为 true。否则,它将存储在 GCM 连接服务器中,直到设备唤醒。

如果设备未连接到 GCM,则消息将被存储,直到建立连接(再次遵守折叠键规则)。建立连接后,GCM 会将所有待处理的消息传递到设备,而不管 delay_while_idle 标志。

【讨论】:

设备已在服务器上注册。该代码适用于某些设备,即某些设备正在接收通知,而对于另一些设备,消息卡在 Accepted 状态。 甚至没有设置 delay_while_idle 标志。所以从 GCM Server 发送消息应该不会有任何延迟

以上是关于对于某些 android 设备,GCM 消息在 GCM 服务器上停留在“已接受”状态的主要内容,如果未能解决你的问题,请参考以下文章

即使所有消息都从服务器成功,某些设备也不会收到 GCM 推送

为啥我无法在 Android 设备上接收来自 GCM 的消息

Android GCM 发送成功但在某些设备上未收到

某些 android 设备未收到 GCM 推送通知

Android GCM 不向设备发送通知消息

为啥 GCM 会为某些 android 设备返回空的注册 ID?