Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 怠速后未收到GCM_Android_Google Cloud Messaging - Fatal编程技术网

Android 怠速后未收到GCM

Android 怠速后未收到GCM,android,google-cloud-messaging,Android,Google Cloud Messaging,如果手机连接到网络,我的应用程序会立即接收GCM消息。但当用户关闭网络并在长时间间隔(约2小时)后重新连接时,设备不会收到消息 我没有添加TTL,所以假设是4周 正在发送的示例消息: { "registration_ids":["APA9xxx........."], "delay_while_idle":false, "collapse_key":"New Message", "restricted_package_name":"com.sample

如果手机连接到网络,我的应用程序会立即接收GCM消息。但当用户关闭网络并在长时间间隔(约2小时)后重新连接时,设备不会收到消息

我没有添加TTL,所以假设是4周

正在发送的示例消息:

{
    "registration_ids":["APA9xxx........."],  
    "delay_while_idle":false,  
    "collapse_key":"New Message",  
    "restricted_package_name":"com.sample.gcm",  
    "data":{  
        "app":2,  
        "product":"message",  
        "notif":"03lm9h"
    }
}
我是否遗漏了一些东西?在交货延迟的情况下,如何使其发挥作用

请给我指出可以帮助我解决这个问题的链接


提前感谢。

您在空闲时延迟应该是真的,从

如果设备已连接但处于空闲状态,则消息仍将立即发送,除非将delay_while_idle标志设置为true。否则,它将存储在GCM服务器中,直到设备唤醒。这就是collapse_key标志发挥作用的地方:如果已经有一条具有相同折叠密钥(和注册ID)的消息存储并等待传递,旧消息将被丢弃,新消息将取代它(也就是说,旧消息将被新消息折叠)

您使用的是可折叠密钥,因此当设备空闲时,GCM服务器上将只保留一个密钥

在守则中:

Message message = new Message.Builder()
    .delayWhileIdle(true)
    //..

您在空闲时延迟,从

如果设备已连接但处于空闲状态,则消息仍将立即发送,除非将delay_while_idle标志设置为true。否则,它将存储在GCM服务器中,直到设备唤醒。这就是collapse_key标志发挥作用的地方:如果已经有一条具有相同折叠密钥(和注册ID)的消息存储并等待传递,旧消息将被丢弃,新消息将取代它(也就是说,旧消息将被新消息折叠)

您使用的是可折叠密钥,因此当设备空闲时,GCM服务器上将只保留一个密钥

在守则中:

Message message = new Message.Builder()
    .delayWhileIdle(true)
    //..

只是添加了一条注释,说明GCM和FCM现在都正式不推荐使用
delay\u while\u idle
参数。请参阅。只是添加了一条注释,说明GCM和FCM现在都正式不推荐使用
delay\u while\u idle
参数。看。