共计 1755 个字符,预计需要花费 5 分钟才能阅读完成。
一、获取 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 最新技术资讯~