一、 获取Push Token的形式
获取Push Token有两种形式:一种是调用getToken办法向Push服务端申请Token,当getToken办法返回为空时,Token可通过onNewToken办法返回,因而须要实现onNewToken办法;另一种是主动初始化,Token通过onNewToken办法返回。这两种办法的具体阐明可看获取和登记Token文档:获取和登记Token。
二、 获取Push Token失败的景象
获取Push Token失败大抵有两种景象:一种是获取Token的接口执行失败,谬误会在日志中显示,有相应的错误码打印;另一种是获取Token的接口执行胜利,没有报错,然而getToken办法返回为空,onNewToken办法也没有被调用。
三、 分景象进行排查
如果有报错,须要找到报错形容和错误码,参考常见错误码阐明文档:常见错误码,依据报错形容和常见错误码阐明文档中对应错误码的解决办法进行排查,大部分问题都能够失去解决。
比拟典型的案例:开发者依照对应错误码的解决办法进行排查,无奈解决问题,起初和开发者要了手机端抓取的日志,从日志中看到申请Token应用的appid不是利用对应的appid。所以肯定要保障应用的agconnect-services.json文件是对应利用最新的文件,能够从AGC管制台上新下载一份;并且保障利用中所有应用到的appid都是对的,能够用全局搜寻进行查找。有些开发者的利用可能是多集体共同开发的,变量命名可能不统一,无奈搜寻所有用到的appid,这种状况下能够通过手机端日志确认应用的appid是否正确。
日志抓取办法:zaaxz
adb shell setprop log.tag.hwpush VERBOSE
adb logcat -v threadtime 1> D:\hwpush.log
2、尝试复现遇到的问题场景。
3、按快捷键“Ctrl+C”实现日志抓取。
查找要害日志:
搜寻api_name:push.gettoken关键字,找到如上图所示的这行日志,error_code是申请Token失败时返回的错误码,app_id是用来申请Token的appid,pkg_name是利用的包名,查看app_id值是否为对应利用的appid,如果不是,能够应用这个app_id在利用的工程中进行全局搜寻,排查在哪个中央应用了这个值,并进行批改。
如果获取token的接口执行胜利,没有报错,onNewToken办法也没有被调用,请查看代码中继承了HmsMessageService的自定义类,看下自定义的类中除了重写了配置Manifest文件文档中阐明的用于接管透传音讯、获取Token的办法外,是否曾经重写其余办法,如果有请去掉,其余办法不须要重写,而且重写可能会导致类中的办法不会被调用。如果继承HmsMessageService的类实现没有问题,请排查工程中定义了几个继承HmsMessageService的类,如果定义了多个继承HmsMessageService的类,也会导致实现的办法不会被调用,继承HmsMessageService的类只能有一个。
典型案例:
开发者应用三方推送,三方推送的SDK中曾经定义了一个继承HmsMessageService的类,这种状况就不须要再定义继承HmsMessageService的类,须要开发者去征询三方推送的技术支持要怎么应用他们定义的这个类。能够通过反编译查看Android申明文件,确定三方推送的SDK中是否定义了继承HmsMessageService的类。能够通过查看手机端日志确定有几个继承HmsMessageService的类,日志抓取办法同上,上面说一下怎么看要害日志。
查找要害日志:
搜寻HmsMessageService num is关键字,找到如上图所示的日志,联合日志上下文中的packageName确定对应利用的日志,HmsMessageService num is前面的数值就是继承HmsMessageService的类的数量,如果不为1,请排查工程代码,并删除多余的类。
理解更多详情>>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~