【FAQ】推送服务常见问题及解决方案
一、推送成功收不到消息,推送返回:
排查步骤:
1、网络不稳定,切换稳定网络进行测试;
2、检查手机是否为EMUI8.0.0系统,如果是早期的EMUI8.0,则要升级尝试(在手机会员服务——服务——升级尝鲜),或者用targetversion 26以下的进行编译来规避这个问题。EMUI版本太低、小于4.1也是不支持的;
3、检查终端token是否正确,在联盟后台进行推送,如果联盟后台推送失败则是token已失效,或者手机配置有问题;进行token检查和手机权限设置,如果推送成功,那么之前失败则是调用接口时参数配置错误导致;
4、如果是收取通知消息失败,检查通知的playload中的msg、appPkgName等配置是否正确;
5、检查华为移动服务的缓存问题,尝试清除数据及缓存,并停止华为移动服务;
6、检查CP是否使用老版本Push,老版本SDK会出现消息延时较明显以及收不到推送的情况,需尽快切换到新版本;
7、搜集日志(详情见日志抓取办法),参考Push日志解读进行排查。
二、Gettoken返回0,无法进入onToken函数,无法收到广播。
1、自定义的Receiver是否继承华为PushReceiver;
2、AndroidMainfest配置是否完善,请对照现网配置进行检查;
3、保存日志,并发过来;
4、清理华为移动服务和应用的缓存、数据,重启手机。再进入应用试一下;
5、如果日志中出现 get token:end 0 和com.huawei.android.pushagent.PushServiceE/PushLog2551: [ReceiverDispatcher-230]responseRegisterTokenFAILED:1(android/PushCommandProcessor.java:557) 表示此处华为移动服务状态是正常的,但是请求服务器出现异常。检查联盟推送状态是否为“已开通”,状态为开通中则是错误的。
如果问题还未得到解决可以重复步骤4,准备日志输出,运行测试应用,打印日志。
三、如何在华为开放平台查看消息是属于运营消息还是通知系统消息?我们推送的时候带了importance字段,但是不能确定该字段是否生效。
华为的通知消息通过提醒方式来显示该条消息的类型。importance字段只有在申请自分类权益后才能生效。
申请自分类权益参考:自动权益申请
四、离线角标不显示。
1、首先需确认是通过哪种方式使用角标。
第一种:华为提供的消息体加字段方式,这种方式不管应用在线或者离线,角标都会正常展示。
参考资料:桌面角标
第二种:您在客户端代码设置角标,这种情况,应用离线的情况可能是没有对收到的离线消息进行处理所以角标没有加上。
参考资料:华为桌面角标开发指导书
2、在确认使用的角标方式后进行排查。
如果使用了第一种,确认离线消息的消息体是否有add_num和set_num字段;如果是第二种,需确认收到离线消息之后是否调用代码加上角标。
五、关于回执问题处理。
1、应用设备不在线:损毁,断网,关机,不在服务器等(大多情况);
2、用户关闭推送权限;
3、回执只会发送一次,在网络异常或者服务器异常等情况时会导致请求失败。
六、CP关于https://api.push.hicloud.com域名的使用问题。
SDK 2.0 URL:https://api.push.hicloud.com/pushsend.do ?ha_source=hms1
SDK 3.0+ URL:https://push-api.cloud.huawei.com/v1/[appId]/messages:send?ha_source=hms1
SDK 2.0 URL是2.0版本使用的接口,可以替换为最新版,替换的同时更新SDK版本到6.7.0,参考最新的文档做好迁移工作,迁移完成之后可以测试一下推送功能是否正常使用,有异常及时处理。
可参考SDK版本更新说明:版本更新说明。
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~