对于某些 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 服务器上停留在“已接受”状态的主要内容,如果未能解决你的问题,请参考以下文章