Android GCM已成功发送但未在某些设备上收到

 哀乐交加6 发布于 2023-02-11 15:56

在服务器端,我使用的是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());

从我用上面的代码测试中看到的,没有错误.消息ID存在,但错误代码名称为null(这是成功推送的标志).

我几乎尝试了所有设置.测试TTL,折叠键,空闲时设置开启和关闭延迟.

哪些情况可能导致阻止(?)GCM推送?我该如何解决这个问题?

编辑

我不知道为什么,但下面的临时解决方案解决了我的问题.

在GcmIntentService#onHandleIntent中只需删除

GcmBroadcastReceiver.completeWakefulIntent(intent);

这条线路发布了清醒的服务.我很好奇,因为在其他设备上,即使没有删除此行,也会连续发送推送消息.

这不是解决方案,因为该文档声明我应该在每次工作后调用completeWakeFulIntent.此外,我的方法将显着耗尽电池.

有什么建议吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有