一、 获取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的类,日志抓取办法同上,下面说一下怎么看要害日志。

查找要害日志:

【FAQ】获取Push Token失败,如何进行排查?

查找HmsMessageService num is要害字,找到如上图所示的日志,结合日志上下文中的packageName确认对应运用的日志,HmsMessageService num is后面的数值便是承继HmsMessageService的类的数量,假如不为1,请排查工程代码,并删除多余的类。

了解更多详情>>

拜访华为开发者联盟官网
获取开发辅导文档
华为移动服务开源仓库地址:GitHub、Gitee

重视我们,第一时间了解 HMS Core 最新技术资讯~