Android GCM已成功发送,但在某些设备上未收到
在服务器端,我使用的是谷歌提供的GCMServer1.0.2库。在客户端,我按照上提供的设置了GCM 我的问题是,在大多数设备上,一切都可以正常工作,但在少数设备上,推送功能无法接收Android GCM已成功发送,但在某些设备上未收到,android,google-cloud-messaging,Android,Google Cloud Messaging,在服务器端,我使用的是谷歌提供的GCMServer1.0.2库。在客户端,我按照上提供的设置了GCM 我的问题是,在大多数设备上,一切都可以正常工作,但在少数设备上,推送功能无法接收 if (case1) message = new Message.Builder() .timeToLive(0) .collapseKey("0") .delayWhileIdle(false) .addData(&quo
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推送?我该如何解决这个问题
编辑
我不知道为什么,但下面的临时解决方案解决了我的问题
在GCMinentService#OnHandleContent中,只需删除即可
GcmBroadcastReceiver.completeWakefulIntent(intent);
该行释放唤醒服务。但我很好奇,因为在其他设备上,推送消息会持续发送,即使这条线路没有被删除
这不是一个解决方案,因为它声明我应该在每次工作之后调用completeWakeFulIntent。而且,我的方法会显著耗尽电池电量
有什么建议吗?您有接收通知的正确版本的Playstore吗? 您是否在这些设备上使用功能正常的Google帐户登录
当我“强制停止”一个应用程序时,我也遇到了一个问题,在“强制停止”(从android 3.1开始)之后,你无法收到任何应用程序的通知,因此也要小心。如果你使用wifi,可能是互联网防火墙阻止了gcm。尝试使用手机sim卡上网
发件人ID
delay\u,而_idle=0
。请阅读更多- 确保Google Play商店已更新至最新版本
- 确保没有阻止通知的系统范围设置
- 进入应用程序管理器中的应用程序并取消选中/重新选中“通知”
- 如果使用Wifi,请将Wifi连接切换到其他AP(如果可能)
- 重新启动设备
- 安装“推送通知修复程序”(仍需安装此程序)
首次运行通知设置可能是令人恼火的任意设置,需要通过以下一种或多种方式“踢”设备。您是在WiFi上测试的吗?@Apoorv否,在LTE网络上。刚刚用WIFI进行了测试,但没有收到推送消息……如果消息发送成功,则regID肯定是错误/无效的,并且谷歌云消息无法传递消息。@artworkadシ. 但是,是否存在这样的情况:即使regId错误/无效,result.getErrorCodeName()也会返回null?@JeeSeokYoon否。playstore或google帐户没有问题。此外,GCM根本不起作用(无论我是否强制停止应用程序)。你在防火墙后面吗?看起来有些人对此有异议。没有防火墙或防病毒应用程序。。。是否有任何android设置会阻止GCM?我不这么认为。。。就像我说的,PlayStore的正确版本和一个连接的谷歌账户。你也可以发布你的清单吗?我正在用谷歌官方文档中的演示代码进行测试。除了我删除了“gcmbroadcasreceiver.completeWakefulIntent(intent);”之外,没有任何更改(甚至包名也没有更改),请阅读上面的评论。。。我已经用LTE,3种不同的WIFI进行了测试。虽然你的方法将是每个有GCM问题的人应该首先采取的方法,但我已经检查并尝试了所有方法。更改了GCM提供的所有设置,但似乎没有任何效果。问题不是GCM,而是“特定电话”上的GCM。另外,请注意,不释放尾流锁解决了此问题。还有其他想法吗?我也有同样的问题,像@JeeSeokYoon,这些步骤都没有为我解决。你检查过播放服务是否连接了吗?如果没有,您需要呼叫Play services问题解决方案。我有类似的问题,但对我来说,消息只是“有时”被接收。为什么谷歌不为这个过程提供一些调试工具?发送者id=project noInstall“推送通知修复程序”(无论如何都要安装这个)这个步骤成功了