有时无法在移动设备中接收推送通知GCM

时间:2013-02-07 07:44:21

标签: android push-notification google-cloud-messaging

我面临一个奇怪的问题。我在我的手机上收到推送通知,如果它已从服务器端发送消息时连接到互联网。但如果当时它没有连接到互联网,而是我在一段时间后连接到互联网。我没有收到通知。根据我的知识,所有这些通知都应该在我们在线时显示,因为GCM服务器存储所有这些消息。我收到了所有其他应用的通知。我也在清单中给予了wakelock许可。可能是什么问题?从服务器端,客户端还是移动设备?请帮忙......

此值从第三方服务器(.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 + ""

先谢谢

1 个答案:

答案 0 :(得分:10)

delay_while_idle=1Also I have given wakelock permission in manifest

相矛盾

delay_while_idle=1表示如果设备处于空闲状态(关闭,离线,锁定屏幕等),则该消息将无法到达设备。如果您希望获得wakelock权限,请将其更改为0。

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

以下是GCM文档的相关引用:

  

delay_while_idle

     

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

     

time_to_live

     

如果有消息应该在GCM存储上保留多长时间(以秒为单位)   设备离线。可选(默认生存时间为4周,必须   被设置为JSON号码。)