一、 获取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 最新技术资讯~

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

  1. 【com.getui.push.v2.sdk.common.ApiException: 获取token失败: timestamp is invalid】

    com.getui.push.v2.sdk.common.ApiException: 获取token失败: timestamp is invalid 今天又发现一个奇怪的问题.本地IDEA和Jar都可 ...

  2. java apns feedback_php从苹果apns的feedback服务器获取推送失败的token

    注意事项: 1.建议和feedback服务器建立长连接,连接过于频繁有可能被当做攻击(简简单单的做一些测试时没有关系的); 2.获取的token是在上次你给你的应用发推送失败时加feedback服务的 ...

  3. 怎么解决自动化用例获取token失败报错

    当用例因为网络原因或者调用接口太快导致接口返回错误,如获取token失败,用例进而也失败. 如何解决这个问题? 通过增加失败重试机制,这里的失败重试指当接口调用失败时就再次重试,重试3次 方法一:通过 ...

  4. 使用identity+jwt保护你的webapi(二)——获取jwt token

    前言 上一篇已经介绍了identity在web api中的基本配置,本篇来完成用户的注册,登录,获取jwt token. 开始 开始之前先配置一下jwt相关服务. 配置JWT 首先NuGet安装包: ...

  5. 如何获取登录token值_Token认证,如何快速方便获取用户信息

    背景 我们有一个Web项目,这个项目提供了很多的Rest API.也做了权限控制,访问API的请求必须要带上事先认证后获取的Token才可以. 认证的话就在Filter中进行的,会获取请求的Token ...

  6. 怎么获取别人服务器信息失败,获取服务器信息失败

    获取服务器信息失败 内容精选 换一换 1.若希望以主席身份入会,enter_code必须传入主席密码.若希望以来宾身份入会,当会议要求来宾密码时,enter_code必须传入来宾密码,会议不要求来宾密 ...

  7. 计算机无法正确抓取硬盘信息,获取硬盘信息失败?2招轻松解决,u盘装系统就这么简单!...

    原标题:获取硬盘信息失败?2招轻松解决,u盘装系统就这么简单! U盘装系统是近来经常听到的一个词汇,现在的人都不再像以前那样事事花钱请人,能自己动手的决不多啰嗦.况且u盘装系统确实也不是个技术含量很高 ...

  8. 微信开发之easyWchat服务器配置验证Token失败原因及解决办法

    之前的服务器域名修改了,需要重新获取服务器相关的配置,遇到的问题就是验证Token失败,从以下几点去查找原 因: ①是否设置域名白名单: ②是否设置安全域名: ③访问验证Token的路径是否正确: 经 ...

  9. Android程序一直吐司获取缓存记录失败 —— 极光推送

    问题: Android程序Toast提示 " 获取缓存记录失败 " ,看的很是别扭,而且想知道原因在哪里. 方案: 接入了极光推送所造成的原因. Android Studio双击S ...

最新文章

  1. 周报_2012第51周(2012/12/16-2012/12/22)
  2. Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
  3. jsp页面点击显示影藏div的一个方法
  4. core java面试题_CoreJava基础面试题
  5. 安装版mysql错误2_【gem安装】mysql2错误
  6. linux线程负载,linux 排查cpu负载过高异常(转载)
  7. 图片标注尺寸_AutoCAD图纸与测量尺寸不一样怎么办
  8. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
  9. 用动态规划解小朋友分糖问题
  10. C#环境下利用VS2017使用MapXtreme7.0.0开发桌面应用实例
  11. 安卓和iOS测试的区别
  12. QCalendarWidget 日历控件
  13. C# 操作word之在表格中插入新行、删除指定行
  14. 【loj2339】【WC2018】通道
  15. 一键AI着色,黑白老照片画面瞬间鲜活
  16. oracle 游离块修复,求助讨论---上颌单侧后牙游离缺失的修复
  17. 王欣的哲学逻辑与产品猜想
  18. PC上无法捕捉vlan tag的原因
  19. 2023年天津仁爱学院专升本化学工程与工艺对口专业限制目录
  20. 信息泄露,那些央视没报的“内鬼

热门文章

  1. Unity 5光照贴图烘焙课程分享
  2. Boost_Asio(4) strand
  3. python post方法登录微信公众号_python实现简单的微信公众号后台编写
  4. 2020.12.14 ps临摹作业
  5. go map 取值异常
  6. Vue使用echarts树图
  7. 为什么医疗保健中的物联网至关重要?
  8. 三字棋的优化 电脑会堵棋电脑会向赢棋的方向走
  9. BES智能手表之开机流程
  10. 刚设计的自动部署产品监控框架【图】