[问题指南] 收不到推送 - Android 篇

javen
2016-04-01 03:04 3.5k 0

提问的前提(收不到消息)

先明确,这里说的收不到消息,前提是:

  • 控制台或者 API 明确显示推送成功;
  • 客户端 SDK 确认集成成功(开发状态),或者对于已经集成好生产状态的客户端,发现收不到消息(生产状态)

如果不满足以上的条件,请根据集成文档,或者搜索解决特定的问题。

推送成功不表示客户端可以收到

要有理解,控制台显示『推送成功』,或者 API 调用返回成功,并不表示,消息已经推送到客户端。这个理解需要有。

控制台显示『推送成功』或 API 调用返回成功,只是表示,极光的服务器端成功地接收了『推送请求』。要把消息成功地推送到客户端,还有很多条件。

核心检查点

你的推送目标里包含了你预期接收消息的客户端(设备)

这个相对好理解。比如,如果你是广播的推送目标,那么确认当前客户端集成日志显示正常,已经成功注册到极光服务器,则你的设备就在推送目标范围内,就应该收到消息。

当然,如果当前客户端集成 JPush SDK 是失败的,肯定不可能收到推送。

需要留意的是:别名、标签(分组)推送。

根据 别名、标签 推送收不到,可以根据下面几个思路排查:

  1. 你根据设备获取到的RegistrationID推送一条,看能否收到(广播也行,注意如果是生产环境还是千万别随便广播);
  2. 检查手中设备设置别名、标签 是否成功(一定要学会看日志);
  3. 检查你推送指定的别名、标签,是否是你设备实际设置的别名、标签。

预期接收消息的客户端(设备)是在线的

这个指的是:你的客户端(设备)当前连接上了 JPush 服务器。(设备网络正常、app进程在、没有调用stopPush服务等)

也许你的手机其他 App 网络连接正常,微信、浏览器都可以用,但 JPush 的确还是没有连接上 JPush 服务器端。这时,最简单的测试方法是:切换网络。

切换网络,是解决网络连接可能性导致推送不到的最直接的方法。因为在某一个运营商网络环境下,是有可能某一个 App 到自己的服务器不畅通,但一般来说,不太可能所有运营商都不好使。

如果切换网络还不能解决问题,很有可能是,上面的第 2 个条件没有满足。

极光控制台收到 API 调用收不到

有一类收不到是这种情况。

这可以确定的是:你自己调用 API 推送的程序、参数不对。因为极光控制台,也是调用 API 来进行推送的。

最后大招

在你上面提及的检查都做了后,如果还是不能解决问题(正常肯定可以定位到),请向官方人员发私信,说明你哪个推送你认为不正常。

极光官方人员根据你的推送记录,『帮你分析』你可能的问题出在哪里。 其实,我们希望你自己多想想,自己去发现问题。

提供如下资料:

  • appKey
  • messageID
  • 收不到推送设备的RegistrationID

Android获取RegistrationID参考戳我了解

Android检查客户端推送连接状态戳我了解

1个回答

热门排序
  • javen | Co-founder
    2016-04-01 03:19

    以下链接社区里,问题是『收不到消息』,但最后是各种自己的原因导致的问题列表,请看看别人的情况,来检查自己的问题点。

    自己的问题 - API 调用写法不对

    http://community.jiguang.cn/t/api/1365/3