7

我面临一个奇怪的问题。我在我的手机中收到推送通知,如果它在从服务器端发送消息时连接到互联网。但如果它当时没有连接到互联网,而是我在一段时间后连接到互联网。我没有收到该通知。据我所知,所有这些通知都应该在我们在线时显示,因为 GCM 服务器存储了所有这些消息。我收到所有其他应用程序的通知。我也在清单中给予了唤醒锁权限。可能是什么问题?来自服务器端、客户端或移动端的任何东西?请帮忙...

此值从 3rd 方服务器(.Net 服务器)发送到 GCM 服务器:

String postdata= "collapse_key=score_update&time_to_live=2419200&delay_while_idle=1&data.message=‌​" + 
message + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + deviceToken + ""

提前致谢

4

1 回答 1

10

delay_while_idle=1矛盾的Also I have given wakelock permission in manifest

delay_while_idle=1表示如果设备处于空闲状态(关闭、离线、锁定屏幕等),消息将不会到达设备。如果您希望您的唤醒锁权限有所作为,请将其更改为 0。

只是为了澄清 - 消息应该在设备停止空闲后到达设备(只要它没有空闲太久,其中“太长”由指定的 确定time_to_live)。

这是来自 GCM 文档的相关报价:

delay_while_idle

如果包含,则表示如果设备空闲,则不应立即发送消息。服务器将等待设备变为活动状态,然后仅发送每个 collapse_key 值的最后一条消息。可选的。默认值为 false,并且必须是 JSON 布尔值。

time_to_live

如果设备离线,消息应在 GCM 存储中保留多长时间(以秒为单位)。可选(默认生存时间为 4 周,并且必须设置为 JSON 数字)。

于 2013-02-07T16:12:18.953 回答