为什么收不到 push 推送?


            
2015-08-12 11:52 | Android

回答:

首先,需要搞清楚两个概念: push 消息,后台消息。

   收到这两种消息的时候,在终端上的表现形式是一样的,都是在通知栏显示一条通知。但实际上它们走的压根就不是一条通道。它们的区别是: push 消息是指调用 RongIM.disconnect() 断开与融云的连接以后收到的消息。而后台消息则是指按 home 键,应用退到后台后收到的消息(此时和融云仍然是连接状态)。

   搞清楚这两者的区别并确认你的问题是 push 消息的问题后,请继续往下看。

   通常收不到 push 消息,有以下几个情况:

   一.  退出应用的时候,必须调用我们的 disconnect() 方法,而不是 logout()。这样退出后我们这边才会启动push进程。

   二.  push 进程的名字不能更改,必须是我们默认的名字,既 io.rong.push.

        (2.6.0dev之后的版本,此进程名字可以修改)

   三.  通过 ddms 或者终端里敲入 adb shell ps|grep rong 查看终端里是否存在 io.rong.push 这个进程。

         有些手机厂家做了特殊限制,不允许第三方后台进程启动,所以我们的后台进程起不来,导致收不到 push 消息。这种情况可以换个手机测试(如三星,大部分三星手机没有做权限限制)。另外大部分国产手机,有权限设置的菜单,比如小米,华为等,可以手动去安全中心,设置应用的自启动权限,后台运行权限等,就可以收到Push消息了。

         不过 vivo 和 oppo 有些型号的手机,一旦应用退到后台,系统会很快把它杀死,这种没有办法解决。目前市面上所有推送都存在这个问题,除非系统把该应用加入白名单。

  四.  push 进程存在,仍然收不到 push 消息。

        如果你的应用有消息免打扰功能,那么请确认当前登录账号之前是否设置过消息免打扰。如果不太确定,那最好去你的应用设定里重新设置下消息免打扰时间。 这里要注意的是: 如果这个账号之前在别的手机上设置过消息免打扰,换一台手机登录或者卸载重装的时候,融云服务端记录的仍然是之前设置的消息免打扰状态,所以这种情况下是收不到push消息的。


    如果不属于上述情况,那请提工单给我们并附上相关 Log。 我们会尽快排查解决!


您认为此回答对您有帮助?

共有 27 位开发者认为此问题有帮助

我对此仍有疑问!继续追问