差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:android:push:troubleshooting [2019/11/21 02:56]
huanxinfudh
im:android:push:troubleshooting [2022/02/24 09:59] (当前版本)
jennifer.zeng [小米推送]
行 5: 行 5:
 ===== 说明 ===== ===== 说明 =====
  
-开发者集成环信的Android离线推送多少都会遇到离线推送收不到的问题。此文档旨在帮助开发者排查收不到离线推送的问题。环信目前提供了小米、华为、oppo、vivo、魅族,以及给海外用户使用的FCM,下面我们来一一分析下集成离线推送可能出现的问题和排查的思路+开发者集成环信的 Android 离线推送时,可能会遇到离线推送收不到的问题。此文档旨在帮助开发者排查收不到离线推送的问题。环信目前提供了小米、华为、oppo、vivo、魅族,以及给海外用户使用的 FCM,下面我们来一一分析下集成离线推送可能出现的问题和排查的思路
  
-**注意:**''​无论集成哪个推送需要先在[[https://​console.easemob.com/​user/​login|环信开发者后台]]上传推送证书。''​+**注意:**''​集成推送需要先在 [[https://​console.easemob.com/​user/​login|环信开发者后台]] 上传推送证书。''​
  
 ===== 华为推送 ===== ===== 华为推送 =====
  
-华为推送首先需要开发者自己先集成好,测试调通之后再去接入环信。+排查时先确认接入过程,华为推送首先需要开发者自己先集成好,测试调通之后再去接入环信。 
 接入环信的时候需要注意: 接入环信的时候需要注意:
  
-1、在初始化环信之前去设置启用华为推送+1、在初始化环信之前去设置启用华为推送: 
 <​code>​ <​code>​
 EMPushConfig.Builder builder = new EMPushConfig.Builder(context);​ EMPushConfig.Builder builder = new EMPushConfig.Builder(context);​
行 21: 行 23:
 </​code>​ </​code>​
  
-2、在登录环信成功进入主界面之后再去连接华为移动服务,并获取华为推送token+2、在登录环信成功进入主界面之后再去连接华为移动服务,并获取华为推送 token。 
 + 
 +3、在华为 PushReceiver 的 onToken 方法里去判断返回的推送 token 是否为空,不为空再去调用 EMClient.getInstance().sendHMSPushTokenToServer(token) 把推送 token 上传给环信。
  
-3、在华为PushReceiver的onToken方法里去判断返回的推送token是否为空,不为空再去调用EMClient.getInstance().sendHMSPushTokenToServer(token)把推送token上传给环信+**注意:**''​连接华为移动服务,并获取华为推送 token 这块的逻辑必须放在环信登录成功之后再去执行,不然在登录之前就回了 onToken 的话,后面环信账号登录成功就没法绑定推送 token ''​
  
-**注意:**''​连华为移动服务,并获取华为推送token这块的逻辑是必须放在环信登录之后再去执行,不然在登录之前就回调了onToken后面环信账号登录成功就没法绑定推送token''​+入完成之后在 ​logcat 里看下登录之日志通过检索 EMPushHelper 查看下华为推送 token 是否上传成功
  
-接入完成之后在logcat里看下登录之后的日志,通过检索EMPushHelper查看下华为推送token是否上传成功 
 <​code>​ <​code>​
-//​1、SDK判断当前设备对应推送是否可用,false代表对应推送不可用,true代表对应推送可用+//1、SDK 判断当前设备对应推送是否可用,false 代表对应推送不可用,true 代表对应推送可用
 2019-09-02 10:​50:​35.972 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​35:​971]:​ [EMPushHelper] isSupportPush:​ FCM - false 2019-09-02 10:​50:​35.972 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​35:​971]:​ [EMPushHelper] isSupportPush:​ FCM - false
 2019-09-02 10:​50:​35.981 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​35:​977]:​ [EMPushHelper] isSupportPush:​ MIPUSH - false 2019-09-02 10:​50:​35.981 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​35:​977]:​ [EMPushHelper] isSupportPush:​ MIPUSH - false
行 35: 行 38:
 2019-09-02 10:​50:​35.988 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​35:​988]:​ [EMPushHelper] EMPushHelper register, prefer push type: HMSPUSH 2019-09-02 10:​50:​35.988 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​35:​988]:​ [EMPushHelper] EMPushHelper register, prefer push type: HMSPUSH
  
-//​2、获取到了华为返回的推送token,这里的推送token可以在华为的推送后台去指定用户测试推送+//​2、获取到了华为返回的推送 token,这里的推送 token 可以在华为的推送后台去指定用户测试推送
 2019-09-02 10:​50:​38.298 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​298]:​ [EMPushHelper] onReceiveToken:​ HMSPUSH - 0869379034831543200000121400CN01 2019-09-02 10:​50:​38.298 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​298]:​ [EMPushHelper] onReceiveToken:​ HMSPUSH - 0869379034831543200000121400CN01
  
行 42: 行 45:
 2019-09-02 10:​50:​38.298 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​298]:​ [EMPushHelper] Retry upload after 262s if failed. 2019-09-02 10:​50:​38.298 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​298]:​ [EMPushHelper] Retry upload after 262s if failed.
  
-//​3、去上传推送token,后面有对应的证书名称+//​3、去上传推送 token,后面有对应的证书名称
 2019-09-02 10:​50:​38.299 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​298]:​ [EMPushHelper] uploadTokenInternal,​ token=0869379034831543200000121400CN01,​ url=https://​a4.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=10492024 2019-09-02 10:​50:​38.299 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​298]:​ [EMPushHelper] uploadTokenInternal,​ token=0869379034831543200000121400CN01,​ url=https://​a4.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=10492024
  
-//​4、推送token上传成功+//​4、推送 token 上传成功
 2019-09-02 10:​50:​38.451 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​450]:​ [EMPushHelper] uploadTokenInternal success. 2019-09-02 10:​50:​38.451 5446-5475/? D/ONE SDK: [2019/09/02 10:​50:​38:​450]:​ [EMPushHelper] uploadTokenInternal success.
 </​code>​ </​code>​
-上面的是上传推送token成功的日志,可以对比你本地logcat里的日志,看下是否完整。(''​需在初始化环信SDK的时候设置EMClient.getInstance().setDebugMode(true)才会有详细的日志输出''​) 
  
-1、如果在第一步判断当前设备推送,看到HMSPUSHfalse,那就是华为推送相关没有配置好需要检查下华为推送jar包是否依赖上,清单是否配置好了华为相关配置尤其是com.huawei.hms.client.appid,检查看配置的格式、字段是否正确并且要在初始化之前去设置好EMPushConfig.Builder+上面的上传推送 ​token 成功日志可以对比你本地 logcat ​里的日志,看是否完整(''​需在初始化环信 SDK 的时候设置 ​EMClient.getInstance().setDebugMode(true) 才会有详细的日志输出''​)
  
-2看logcat里的日志,如果HMSPUSH是true,但是没有了之后的日志输出,那就是注册华为推送的时候出问题了,需要连接华为移动服务和注册华为推送token这块api返的错误码然后根据错误码排+1、如果在第一步判断当前设备推送,看到 ​HMSPUSH 是 false,那就是华为推送相关没有配置好,需要检查下华为推送 ​jar 包是否依赖上,清单里是否配置好了华为相关配置尤其是 com.huawei.hms.client.appid,检看看配置的格式、字段是否正确。并且要在初始化之前去设置好 EMPushConfig.Builder。
  
-这两步调试正常后,后面的上传推送token的应该就不会有问题(如果出现失败的情况,请提供手机本地的log文件反馈环信),之后可以去测试华为推送。测试推送的时候需要先把进程杀掉,首先在华为后台去单推消息,看app端是否可以收到(这里一般都是可以收到的,如果没有收到耐心等待几分钟,可能是华为那边推送有延迟,这个可以在华为的开发者群里核实下),然后再使用其他账号给当前的账号发消息测试。+2、看 logcat 里的日志,如果 HMSPUSH 是 true,但是没有了之后的日志输出,那就是注册华为推送的时候出问题了,需要看下连接华为移动服务和注册华为推送 token 这块 API 返回的错误码,然后根据错误码排查。 
 + 
 +这两步调试正常后,后面的上传推送 token 一般不会有问题(如果出现失败的情况,请提供手机本地的 log 文件反馈环信),之后可以去测试华为推送。测试推送的时候需要先把进程杀掉,首先在华为后台去单推消息,看 ​App 端是否可以收到(这里一般都是可以收到的,如果没有收到耐心等待几分钟,可能是华为那边推送有延迟,这个可以在华为的开发者群里核实下),然后再使用其他账号给当前的账号发消息测试。
  
 **如果出现测试我们的离线推送没有收到,需检查以下两步:** **如果出现测试我们的离线推送没有收到,需检查以下两步:**
  
-1、是否有调用EMClient.getInstance().pushManager().disableOfflinePush设置离线推送免打扰时间+1、是否有调用 EMClient.getInstance().pushManager().disableOfflinePush 设置离线推送免打扰时间
  
-2、如果是群组消息是否有调用EMClient.getInstance().pushManager().updatePushServiceForGroup去屏蔽群组离线推送+2、如果是群组消息是否有调用 EMClient.getInstance().pushManager().updatePushServiceForGroup 去屏蔽群组离线推送
  
-如果以上两步都没有设置,需要提供消息内容、消息时间和接收方id反馈给环信来查+如果以上两步都没有设置,需要提供消息内容、消息时间和接收方 ​ID 反馈给环信来查
  
 ===== 小米推送 ===== ===== 小米推送 =====
  
-小米推送的集成比较简单,导入小米推送的jar包,在清单AndroidManifest.xml里加上小米相关的权限和配置,如下 +首先可以检查小米的集成是否正确。小米推送的集成比较简单,导入小米推送的 jar 包,在清单 AndroidManifest.xml 里加上小米相关的权限和配置,如下权限: 
-权限:+
 <​code>​ <​code>​
-<!-- Mi推送配置 start -->+<!-- Mi 推送配置 start -->
     <​permission     <​permission
         android:​name="​${applicationId}.permission.MIPUSH_RECEIVE"​         android:​name="​${applicationId}.permission.MIPUSH_RECEIVE"​
行 75: 行 79:
  
     <​uses-permission android:​name="​${applicationId}.permission.MIPUSH_RECEIVE"​ />     <​uses-permission android:​name="​${applicationId}.permission.MIPUSH_RECEIVE"​ />
-    <!-- Mi推送配置 end -->+    <!-- Mi 推送配置 end -->
 </​code>​ </​code>​
 +
 配置: 配置:
 +
 <​code>​ <​code>​
-<!-- Mi推送配置 start -->+<!-- Mi 推送配置 start -->
         <service         <service
             android:​name="​com.xiaomi.push.service.XMPushService"​             android:​name="​com.xiaomi.push.service.XMPushService"​
行 90: 行 96:
             android:​exported="​false"​             android:​exported="​false"​
             android:​permission="​android.permission.BIND_JOB_SERVICE"​             android:​permission="​android.permission.BIND_JOB_SERVICE"​
-            android:​process=":​pushservice"​ /> <​!--注:此service必须在3.0.1版本以后(包括3.0.1版本)加入-->​+            android:​process=":​pushservice"​ /> <​!--注:此 service 必须在 3.0.1 版本以后(包括 3.0.1 版本)加入-->​
  
         <service         <service
行 99: 行 105:
         <service         <service
             android:​name="​com.xiaomi.mipush.sdk.MessageHandleService"​             android:​name="​com.xiaomi.mipush.sdk.MessageHandleService"​
-            android:​enabled="​true"​ /> <​!--注:此service必须在2.2.5版本以后(包括2.2.5版本)加入-->​+            android:​enabled="​true"​ /> <​!--注:此 service 必须在 2.2.5 版本以后(包括 2.2.5 版本)加入-->​
         <​receiver         <​receiver
             android:​name="​com.xiaomi.push.service.receivers.NetworkStatusReceiver"​             android:​name="​com.xiaomi.push.service.receivers.NetworkStatusReceiver"​
行 121: 行 127:
         </​receiver>​         </​receiver>​
  
-        <​receiver android:​name="​com.hyphenate.chatuidemo.receiver.MyxmReceiver">+        <​receiver android:​name="​com.hyphenate.push.platform.mi.EMMiMsgReceiver">
             <​intent-filter>​             <​intent-filter>​
                 <action android:​name="​com.xiaomi.mipush.RECEIVE_MESSAGE"​ />                 <action android:​name="​com.xiaomi.mipush.RECEIVE_MESSAGE"​ />
行 132: 行 138:
             </​intent-filter>​             </​intent-filter>​
         </​receiver>​         </​receiver>​
-        <!-- Mi推送配置 end-->+        <!-- Mi 推送配置 end-->
 </​code>​ </​code>​
-在初始化环信之前去设置上小米推送的appidappkey+ 
 +在初始化环信之前去设置上小米推送的 ​Appid 和 App Key: 
 <​code>​ <​code>​
 EMPushConfig.Builder builder = new EMPushConfig.Builder(context);​ EMPushConfig.Builder builder = new EMPushConfig.Builder(context);​
行 140: 行 148:
 options.setPushConfig(builder.build());​ options.setPushConfig(builder.build());​
 </​code>​ </​code>​
-然后运行app去登录,查看logcat里的日志检索EMPushHelper确认下小米推送是否集成成功+ 
 +然后运行 ​App 去登录,查看 logcat 里的日志检索 EMPushHelper 确认下小米推送是否集成成功。 
 <​code>​ <​code>​
-//​1、SDK判断当前设备小米推送可用+//1、SDK 判断当前设备小米推送可用
 2019-09-03 15:​52:​57.275 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​275]:​ [EMPushHelper] isSupportPush:​ MIPUSH - true 2019-09-03 15:​52:​57.275 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​275]:​ [EMPushHelper] isSupportPush:​ MIPUSH - true
 2019-09-03 15:​52:​57.275 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​275]:​ [EMPushHelper] EMPushHelper register, prefer push type: MIPUSH 2019-09-03 15:​52:​57.275 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​275]:​ [EMPushHelper] EMPushHelper register, prefer push type: MIPUSH
  
-//​2、获取到了小米返回的推送token,这里的推送token就是小米推送的regid+//​2、获取到了小米返回的推送 token,这里的推送 token 就是小米推送的 regid
 2019-09-03 15:​52:​57.725 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​725]:​ [EMPushHelper] onReceiveToken:​ MIPUSH - Tn0uw0uGRoadNgW6TElcKCGiEwrMCo39nWomRxQU0+K+WlqvFmaHSn45vr9fLG3k 2019-09-03 15:​52:​57.725 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​725]:​ [EMPushHelper] onReceiveToken:​ MIPUSH - Tn0uw0uGRoadNgW6TElcKCGiEwrMCo39nWomRxQU0+K+WlqvFmaHSn45vr9fLG3k
  
行 153: 行 163:
 2019-09-03 15:​52:​57.725 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​725]:​ [EMPushHelper] Retry upload after 287s if failed. 2019-09-03 15:​52:​57.725 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​725]:​ [EMPushHelper] Retry upload after 287s if failed.
  
-//​3、去上传推送token,后面有对应的证书名称+//​3、去上传推送 token,后面有对应的证书名称
 2019-09-03 15:​52:​57.726 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​726]:​ [EMPushHelper] uploadTokenInternal,​ token=Tn0uw0uGRoadNgW6TElcKCGiEwrMCo39nWomRxQU0+K+WlqvFmaHSn45vr9fLG3k,​ url=https://​a5-v2.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=2882303761517426801 2019-09-03 15:​52:​57.726 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​57:​726]:​ [EMPushHelper] uploadTokenInternal,​ token=Tn0uw0uGRoadNgW6TElcKCGiEwrMCo39nWomRxQU0+K+WlqvFmaHSn45vr9fLG3k,​ url=https://​a5-v2.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=2882303761517426801
  
-//​4、推送token上传成功+//​4、推送 token 上传成功
 2019-09-03 15:​52:​58.930 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​58:​930]:​ [EMPushHelper] uploadTokenInternal success. 2019-09-03 15:​52:​58.930 2984-3173/​com.hyphenate.chatuidemo D/ONE SDK: [2019/09/03 15:​52:​58:​930]:​ [EMPushHelper] uploadTokenInternal success.
 </​code>​ </​code>​
  
-上面的是上传推送token成功的日志,可以对比你本地logcat里的日志,看是否完整。(''​需在初始化环信SDK的时候设置EMClient.getInstance().setDebugMode(true)才会有详细的日志输出''​)+上面的是上传推送 token 成功的日志,可以对比你本地 logcat 里的日志,看是否完整。(''​需在初始化环信 SDK 的时候设置 EMClient.getInstance().setDebugMode(true) 才会有详细的日志输出''​)
  
-1、如果在这一步看到MIPUSH是false,那就是小米推送没有配置好,比如没有导入小米推送的jar,清单里的权限和配置没有加上,或者就是没有在初始化之前去设置上小米推送的appidappkey+1、如果在这一步看到 MIPUSH 是 false,那就是小米推送没有配置好,比如没有导入小米推送的 jar,清单里的权限和配置没有加上,或者就是没有在初始化之前去设置上小米推送的 ​Appid 和 App Key
  
-2、如果没有看到小米返回的推送token的日志,那应该会有输出onErrorResponse:​后面会有小米那边返回的错误码,需根据错误码去排查+2、如果没有看到小米返回的推送 token 的日志,那应该会有输出 onErrorResponse:​ 后面会有小米那边返回的错误码,需根据错误码去排查
  
-只要保证这两步是正常的,后面上传推送token的一般不会有问题,如果发现上传失败的情况,请反馈环信。然后在小米推送后台去使用regid(regid在第二步中获取)给设备推送消息,收到之后就可以杀掉进程去测试离线推送了。+只要保证这两步是正常的,后面上传推送 token 的一般不会有问题,如果发现上传失败的情况,请反馈环信。然后在小米推送后台去使用 regid(regid 在第二步中获取)给设备推送消息,收到之后就可以杀掉进程去测试离线推送了。
  
 **如果出现没有收到离线推送,需检查以下两步:** **如果出现没有收到离线推送,需检查以下两步:**
  
-1、是否有调用EMClient.getInstance().pushManager().disableOfflinePush设置离线推送免打扰时间+1、是否有调用 ​''​EMClient.getInstance().pushManager().disableOfflinePush'' ​设置离线推送免打扰时间
  
-2、如果是群组消息是否有调用EMClient.getInstance().pushManager().updatePushServiceForGroup屏蔽群组离线推送+2、如果是群组消息是否有调用 ​''​EMClient.getInstance().pushManager().updatePushServiceForGroup'' ​屏蔽群组离线推送
  
-如果以上两步都设置,需要提供消息内容、消息时间和接收方id反馈给环信来查+如果以上两步都有设置,需要提供消息内容、消息时间和接收方 ​ID 反馈给环信来查
  
-===== OPPO推送 =====+===== OPPO 推送 =====
    
-集成OPPO推送具体文件参考[[http://​docs-im.easemob.com/​im/​android/​push/​thirdpartypush#​oppo_%E6%8E%A8%E9%80%81%E9%9B%86%E6%88%90|OPPO推送集成]]+集成 OPPO 推送具体文件参考[[http://​docs-im.easemob.com/​im/​android/​push/​thirdpartypush#​oppo_%E6%8E%A8%E9%80%81%E9%9B%86%E6%88%90|OPPO推送集成]]
  
-**集成OPPO推送时需要注意以下几点:**+**集成 OPPO 推送时需要注意以下几点:**
  
-1、在环信开发者后台上传OPPO的推送证书时,需要填OPPO推送的AppKey和MasterSecret以及程序的包名,MasterSecret需要到[[https://​push.oppo.com/​|OPPO推送平台]]-配置管理-应用配置 页面查看。+1、在环信开发者后台上传 OPPO 的推送证书时,需要填 OPPO 推送的 ​App Key 和 MasterSecret 以及程序的包名,MasterSecret 需要到[[https://​push.oppo.com/​|OPPO 推送平台]]-配置管理-应用配置 页面查看。
  
 2、需要在手机通知管理里打开该应用的允许通知权限 2、需要在手机通知管理里打开该应用的允许通知权限
  
-3、在初始化环信之前去设置上OPPO推送的AppKey和AppSecret+3、在初始化环信之前去设置上 OPPO 推送的 ​App Key 和 AppSecret
 <​code>​ <​code>​
 EMPushConfig.Builder builder = new EMPushConfig.Builder(context);​ EMPushConfig.Builder builder = new EMPushConfig.Builder(context);​
行 192: 行 202:
 options.setPushConfig(builder.build()); ​ options.setPushConfig(builder.build()); ​
 </​code>​ </​code>​
-4、需要在消息扩展里设置上oppochannel id+4、OPPO 给 8.0 系统之后的手机发推送需要设置通道 ID,环信这边推送给 OPPO 的时候会加上默认的通道 ID:“hyphenate_chatuidemo_notification”,如果需要指定准确的通道 ID 就需要在消息扩展里设置项目本地使用channelID
 <​code>​ <​code>​
-// 设置自定义推送提示+// 设置推送通道 ID
 JSONObject extObject = new JSONObject();​ JSONObject extObject = new JSONObject();​
 try { try {
-    extObject.put("​em_oppo_push_channel_id", ​chanleid);+    extObject.put("​em_push_channel_id", ​”channelID“);
 } catch (JSONException e) { } catch (JSONException e) {
     e.printStackTrace();​     e.printStackTrace();​
行 205: 行 215:
 </​code>​ </​code>​
  
-集成完成之后运行app去登录,在logcat里检索EMPushHelper查看日志确定是否集成成功+集成完成之后运行 ​App 去登录,在 logcat 里检索 EMPushHelper 查看日志确定是否集成成功
 <​code>​ <​code>​
 //​1、SDK判断当前设备OPPO推送可用 //​1、SDK判断当前设备OPPO推送可用
行 215: 行 225:
 2019-09-06 14:​21:​27.610 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​610]:​ [EMPushHelper] EMPushHelper register, prefer push type: OPPOPUSH 2019-09-06 14:​21:​27.610 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​610]:​ [EMPushHelper] EMPushHelper register, prefer push type: OPPOPUSH
  
-//​2、获取到了OPPO返回的推送token+//​2、获取到了 OPPO 返回的推送 token
 2019-09-06 14:​21:​27.805 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​805]:​ [EMPushHelper] onReceiveToken:​ OPPOPUSH - CN_724a57d2233d2363fbdeff46af095155 2019-09-06 14:​21:​27.805 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​805]:​ [EMPushHelper] onReceiveToken:​ OPPOPUSH - CN_724a57d2233d2363fbdeff46af095155
  
行 222: 行 232:
 2019-09-06 14:​21:​27.806 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​806]:​ [EMPushHelper] Retry upload after 469s if failed. 2019-09-06 14:​21:​27.806 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​806]:​ [EMPushHelper] Retry upload after 469s if failed.
  
-//​3、去上传推送token,后面有对应的证书名称+//​3、去上传推送 token,后面有对应的证书名称
 2019-09-06 14:​21:​27.807 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​807]:​ [EMPushHelper] uploadTokenInternal,​ token=CN_724a57d2233d2363fbdeff46af095155,​ url=https://​a1.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=65872dc4c26a446a8f29014f758c8272 2019-09-06 14:​21:​27.807 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​807]:​ [EMPushHelper] uploadTokenInternal,​ token=CN_724a57d2233d2363fbdeff46af095155,​ url=https://​a1.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=65872dc4c26a446a8f29014f758c8272
  
-//​4、推送token上传成功+//​4、推送 token 上传成功
 2019-09-06 14:​21:​27.934 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​933]:​ [EMPushHelper] uploadTokenInternal success. 2019-09-06 14:​21:​27.934 7852-7912/​com.hyphenate.chatuidemo.push D/ONE SDK: [2019/09/06 14:​21:​27:​933]:​ [EMPushHelper] uploadTokenInternal success.
 </​code>​ </​code>​
  
-上面的是上传推送token成功的日志,可以对比你本地logcat里的日志,看下是否完整。(''​需在初始化环信SDK的时候设置EMClient.getInstance().setDebugMode(true)才会有详细的日志输出''​)+上面的是上传推送 token 成功的日志,可以对比你本地 logcat 里的日志,看下是否完整。(''​需在初始化环信 SDK 的时候设置 EMClient.getInstance().setDebugMode(true) 才会有详细的日志输出''​)
  
-1、如果在这一步看到OPPOPUSH是false,那就是OPPO推送没有配置好,比如没有导入OPPO推送的jar,清单里的配置没有加上,或者就是没有在初始化之前去设置上OPPO推送的AppKey和AppSecret。+1、如果在这一步看到 OPPOPUSH 是 false,那就是 OPPO 推送没有配置好,比如没有导入 OPPO 推送的 jar,清单里的配置没有加上,或者就是没有在初始化之前去设置上 OPPO 推送的 ​App Key 和 AppSecret。
  
-2、如果没有看到OPPO返回的推送token的日志,那应该会有输出onErrorResponse:​后面会有OPPO那边返回的错误码,需根据错误码去排查+2、如果没有看到 OPPO 返回的推送 token 的日志,那应该会有输出 onErrorResponse:​ 后面会有 OPPO 那边返回的错误码,需根据错误码去排查
  
-只要保证这两步是正常的,后面上传推送token的一般不会有问题,如果发现上传失败的情况,请反馈环信。然后在OPPO后台去使用推送token(在第二步中获取)给设备推送消息,收到可以杀掉进程去测试离线推送+只要保证这两步是正常的,后面上传推送 token 的一般不会有问题,如果发现上传失败的情况,请反馈环信。然后在 OPPO 后台去使用推送 token (在第二步中获取)给设备推送消息,收到后可以杀掉进程去测试离线推送。
  
 **如果出现没有收到离线推送,需检查以下两步:** **如果出现没有收到离线推送,需检查以下两步:**
  
-1、是否有调用EMClient.getInstance().pushManager().disableOfflinePush设置离线推送免打扰时间+1、是否有调用 ​''​EMClient.getInstance().pushManager().disableOfflinePush'' ​设置离线推送免打扰时间
  
-2、如果是群组消息是否有调用EMClient.getInstance().pushManager().updatePushServiceForGroup屏蔽群组离线推送+2、如果是群组消息是否有调用 ​''​EMClient.getInstance().pushManager().updatePushServiceForGroup'' ​屏蔽群组离线推送
  
-如果以上两步都设置,需要提供消息内容、消息时间和接收方id反馈给环信来查+如果以上两步都有设置,需要提供消息内容、消息时间和接收方 ​ID 反馈给环信来查
  
-===== VIVO推送 =====+===== VIVO 推送 =====
    
-集成VIVO推送具体文件参考[[http://​docs-im.easemob.com/​im/​android/​push/​thirdpartypush#​vivo_%E6%8E%A8%E9%80%81%E9%9B%86%E6%88%90|VIVO推送集成]]+集成 VIVO 推送具体文件参考[[http://​docs-im.easemob.com/​im/​android/​push/​thirdpartypush#​vivo_%E6%8E%A8%E9%80%81%E9%9B%86%E6%88%90|VIVO推送集成]]
  
-**集成OPPO推送时需要注意以下几点:**+**集成 ​VIVO 推送时需要注意以下几点:**
  
-1、测试的VIVO机型是否是支持VIVO推送的,详情可见[[https://​dev.vivo.com.cn/​documentCenter/​doc/​156 | VIVO官网文档_支持机型和系统]]+1、测试的 VIVO 机型是否是支持 VIVO 推送的,详情可见[[https://​dev.vivo.com.cn/​documentCenter/​doc/​156 | VIVO 官网文档_支持机型和系统]]
  
 2、需要在手机通知管理里打开该应用的允许通知权限 2、需要在手机通知管理里打开该应用的允许通知权限
  
-集成完成之后运行app去登录,在logcat里检索EMPushHelper查看日志确定下是否集成成功+集成完成之后运行 ​App 去登录,在 ​''​logcat'' ​里检索 ​''​EMPushHelper'' ​查看日志确定下是否集成成功
  
 <​code>​ <​code>​
-//​1、SDK判断当前设备VIVO推送可用+//1、SDK 判断当前设备 VIVO 推送可用
 2019-10-14 14:​57:​33.231 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​231]:​ [EMPushHelper] isSupportPush:​ FCM - false 2019-10-14 14:​57:​33.231 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​231]:​ [EMPushHelper] isSupportPush:​ FCM - false
 2019-10-14 14:​57:​33.245 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​245]:​ [EMPushHelper] isSupportPush:​ MIPUSH - false 2019-10-14 14:​57:​33.245 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​245]:​ [EMPushHelper] isSupportPush:​ MIPUSH - false
行 267: 行 277:
 2019-10-14 14:​57:​33.303 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​303]:​ [EMPushHelper] EMPushHelper register, prefer push type: VIVOPUSH 2019-10-14 14:​57:​33.303 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​303]:​ [EMPushHelper] EMPushHelper register, prefer push type: VIVOPUSH
  
-//​2、获取到的VIVO返回的推送token+//​2、获取到的 VIVO 返回的推送 token
 2019-10-14 14:​57:​33.623 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​623]:​ [EMPushHelper] onReceiveToken:​ VIVOPUSH - 15665456497861102581637 2019-10-14 14:​57:​33.623 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​623]:​ [EMPushHelper] onReceiveToken:​ VIVOPUSH - 15665456497861102581637
 2019-10-14 14:​57:​33.623 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​623]:​ [EMPushHelper] Retry upload after 4s if failed. 2019-10-14 14:​57:​33.623 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​623]:​ [EMPushHelper] Retry upload after 4s if failed.
行 273: 行 283:
 2019-10-14 14:​57:​33.624 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​624]:​ [EMPushHelper] Retry upload after 301s if failed. 2019-10-14 14:​57:​33.624 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​624]:​ [EMPushHelper] Retry upload after 301s if failed.
  
-//​3、去上传推送token,后面有对应的证书名称+//​3、去上传推送 token,后面有对应的证书名称
 2019-10-14 14:​57:​33.624 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​624]:​ [EMPushHelper] uploadTokenInternal,​ token=15665456497861102581637,​ url=https://​a4.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=11025#​9b74dbfc-55c4-4441-9d0a-561ff21addc7 2019-10-14 14:​57:​33.624 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​624]:​ [EMPushHelper] uploadTokenInternal,​ token=15665456497861102581637,​ url=https://​a4.easemob.com:​443/​easemob-demo/​chatdemoui/​users/​omg4,​ notifier name=11025#​9b74dbfc-55c4-4441-9d0a-561ff21addc7
  
-//​4、推送token上传成功+//​4、推送 token 上传成功
 2019-10-14 14:​57:​33.760 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​759]:​ [EMPushHelper] uploadTokenInternal success. 2019-10-14 14:​57:​33.760 24337-24437/​com.hyphenate.chatuidemo D/ONE SDK: [2019/10/14 14:​57:​33:​759]:​ [EMPushHelper] uploadTokenInternal success.
 </​code>​ </​code>​
  
-上面的是上传推送token成功的日志,可以对比你本地logcat里的日志,看下是否完整。(''​需在初始化环信SDK的时候设置EMClient.getInstance().setDebugMode(true)才会有详细的日志输出''​)+上面的是上传推送 token 成功的日志,可以对比你本地 logcat 里的日志,看下是否完整。(''​需在初始化环信 SDK 的时候设置 EMClient.getInstance().setDebugMode(true) 才会有详细的日志输出''​)
  
-1、如果在这一步看到VIVOPUSH是false,那就是VIVO推送没有配置好,比如没有导入VIVO推送的jar,清单里没有去配置VIVO的appidappkey+1、如果在这一步看到 VIVOPUSH 是 false,那就是 VIVO 推送没有配置好,比如没有导入 VIVO 推送的 jar,清单里没有去配置 VIVO 的 Appid 和 App Key;
  
-2、如果没有看到VIVO返回的推送token的日志,那应该会有输出onErrorResponse:​后面会有VIVO那边返回的错误码,需根据错误码去排查+2、如果没有看到 VIVO 返回的推送 token 的日志,那应该会有输出 ​''​onErrorResponse''​: 后面会有 VIVO 那边返回的错误码,需根据错误码去排查
  
-只要保证这两步是正常的,后面上传推送token的一般不会有问题,如果发现上传失败的情况,请反馈环信。然后在OPPO后台去使用推送token(在第二步中获取)给设备推送消息,收到可以杀掉进程去测试离线推送+只要保证这两步是正常的,后面上传推送 token 的一般不会有问题,如果发现上传失败的情况,请反馈环信。然后在 OPPO 后台去使用推送 token (在第二步中获取)给设备推送消息,收到后可以杀掉进程去测试离线推送。
  
 如果出现没有收到离线推送,需检查以下两步: 如果出现没有收到离线推送,需检查以下两步:
  
-1、是否有调用EMClient.getInstance().pushManager().disableOfflinePush设置离线推送免打扰时间+1、是否有调用 ​''​EMClient.getInstance().pushManager().disableOfflinePush'' ​设置离线推送免打扰时间
  
-2、如果是群组消息是否有调用EMClient.getInstance().pushManager().updatePushServiceForGroup屏蔽群组离线推送+2、如果是群组消息是否有调用 ​''​EMClient.getInstance().pushManager().updatePushServiceForGroup'' ​屏蔽群组离线推送
  
-如果以上两步都设置,需要提供消息内容、消息时间和接收方id反馈给环信来查+如果以上两步都有设置,需要提供消息内容、消息时间和接收方 ​ID 反馈给环信技术支持来查