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

一、 获取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

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

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,请排查工程代码,并删除多余的类。

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

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

原文链接:https://www.cnblogs.com/hmscore/p/17146899.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【FAQ】获取Push Token失败,如何进行排查? - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 安卓ro.serialno产生的整个流程

    前言: 关于ro.serialno这个属性,相信大家都不陌生了,应用层的Build.getSerial(),Build.SERIAL等均是直接或间接的获取了这个属性值。接下来从boot到系统应用,小小的分析一下它的整个流程: 由于是APP经常使用,那我们从应用层分析到底层kernel/boot 一,framework层 好的,我们进入安卓源码目录,grep查…

    Android 2023年4月18日
    00
  • Android报”NoClassDefFoundError”如何解决?

    “NoClassDefFoundError”异常表示在运行时,Java Virtual Machine(JVM)试图根据一个类型的信息加载类,但是该类在编译时存在,而在运行时却无法被找到。这个异常通常表示在编译阶段和运行阶段之间出现了不匹配的问题,例如将JAR文件添加到build path中,但该JAR文件中的某些类在应用程序运行时无法找到。 以下是两种可能…

    Android 2023年4月3日
    00
  • Android中drawable和mipmap到底有什么区别

    欢迎通过我的个人博客来查看此文章 老项目代码中发现有的图片放到了drawable中, 有的图片放到了mipmap中, 开发时秉承哪个目录下文件多放哪里的原则, 偶尔有疑惑搜一搜文章, 看到了结论也就这么使用了, 不过今日有时间, 依次检验了一下文章中的内容, 发现和实际的表现出入甚远. 常见的几种结论 Case 1 drawable会剔除其它密度, mipm…

    Android 2023年4月18日
    00
  • Android Studio中的一些常见控件

    Android Studio是一款非常流行的用于开发Android应用程序的集成开发环境(IDE)。它提供了许多内置控件,使开发人员可以轻松创建应用程序界面和功能。在本文中,我们将介绍Android Studio中的一些常见控件,例如TextView,Button,EditText,ImageView等。 TextView控件 TextView是一个用于显示…

    Android 2023年4月17日
    00
  • Android模拟器调试串口

    一、安装虚拟串口软件 虚拟串口软件推荐 Virtual Serial Port Driver 官网 和 Virtual Serial Port Kit 官网 都可以免费试用15天。 这里以Virtual Serial Port Kit为例,打开安装好的Virtual Serial Port Kit,点击菜单栏的新增图标 然后选择两个端口点确定即可 1.1 测…

    Android 2023年4月17日
    00
  • 运动健康路线导入,助力用户轻松导航

    华为HMS Core运动健康服务支持通过REST API,以GPX文件格式写入用户路线数据,支持导入轨迹(Track)或路程(Route)类型的数据,实现用户路线数据在华为运动健康App中的展示效果。 假若与华为运动健康App相连接的穿戴设备支持路线导入,那么用户路线数据将自动下发至穿戴设备。用户可使用手表轻松导航,按照既定路线进行跑步、爬山等活动。(当前支…

    Android 2023年4月17日
    00
  • Android报”InflateException”如何解决?

    Android报”InflateException”异常通常是在使用布局文件时出现的,表示在布局文件中出现了错误,导致无法正常加载页面,下面详细讲解该异常的原因和解决办法。 原因 1. Layout文件中资源文件引用错误 如果在布局文件中引用了不存在资源文件或者资源文件引用错误,就会出现”InflateException”异常,比如在布局文件中使用的图片文件…

    Android 2023年4月3日
    00
  • Android WebView 踩坑日记,字体怎么突然变小了???

    背景 最近,端内在做 webView 统一的时候,个性签名中的 WebView 替换为 CustomWebView 之后,发现字体突然变小。 一开始不知道是什么原因,通过二分法查找最近的提交,排查之后,发现是 SignatureWebView 的继承关系从 WebView 修改为 CustomWebView。revert 之后就正常了。 于是,我问自己,为什…

    Android 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部