我面临一个奇怪的问题。我在我的手机上收到推送通知,如果它已从服务器端发送消息时连接到互联网。但如果当时它没有连接到互联网,而是我在一段时间后连接到互联网。我没有收到通知。根据我的知识,所有这些通知都应该在我们在线时显示,因为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() + "®istration_id=" + deviceToken + ""
先谢谢
答案 0 :(得分:10)
delay_while_idle=1
与Also 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号码。)