对于某些 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 推送