Jee*_*oon 30 android google-cloud-messaging
在服务器端,我使用的是Google提供的GCM server 1.0.2库.在客户端,我按照官方文档中的说明设置了GCM .
我的问题是在大多数设备上一切正常,但在少数设备上,推送没有收到.
if (case1)
message = new Message.Builder()
.timeToLive(0)
.collapseKey("0")
.delayWhileIdle(false)
.addData("msg", msg).build();
else if (case2)
message = new Message.Builder()
.collapseKey("2")
.addData("msg", msg).build();
else
message = new Message.Builder().addData("msg", msg).build();
Result result = sender.sendNoRetry(message, regId);
System.out.println("Message ID:"+result.getMessageId());
System.out.println("Failed:" + result.getErrorCodeName());
Run Code Online (Sandbox Code Playgroud)
从我用上面的代码测试中看到的,没有错误.消息ID存在,但错误代码名称为null(这是成功推送的标志).
我几乎尝试了所有设置.测试TTL,折叠键,空闲时设置开启和关闭延迟.
哪些情况可能导致阻止(?)GCM推送?我该如何解决这个问题?
我不知道为什么,但下面的临时解决方案解决了我的问题.
在GcmIntentService#onHandleIntent中只需删除
GcmBroadcastReceiver.completeWakefulIntent(intent);
Run Code Online (Sandbox Code Playgroud)
这条线路发布了清醒的服务.我很好奇,因为在其他设备上,即使没有删除此行,也会连续发送推送消息.
这不是解决方案,因为该文档声明我应该在每次工作后调用completeWakeFulIntent.此外,我的方法将显着耗尽电池.
有什么建议吗?
Ass*_*iel 18
SENDER ID
正确设置从Google收到的内容.delay_while_idle = 1
?这意味着如果设备处于空闲状态(关闭,离线,锁定屏幕等),则消息将无法到达设备.delay_while_idle = 0
如果您希望获得wakelock权限,请将其更改为.请在这里阅读更多.您有正确版本的 Playstore 来接收通知吗?您是否在这些设备上使用可用的 Google 帐户登录?
当我“强制停止”一个应用程序时,我也遇到了一个问题,在“强制停止”(从 android 3.1 开始)之后,您无法在任何应用程序上收到通知,所以也要小心。
归档时间: |
|
查看次数: |
32775 次 |
最近记录: |