【FAQ】推送服务常见问题及解答
目录
1、报错 6003 解决方案。
2、推送成功收不到消息。
3、Gettoken 返回 0,无法进入 onToken 函数,无法收到广播。
4、如何在华为开放平台查看消息属性,推送的时候带了 importance 字段,但是不能确定该字段是否生效。
5、离线角标不显示。
6、关于回执问题处理。
7、CP 关于https://api.push.hicloud.com域名的使用问题。
8、在 AGC 平台创建受众群组进行推送,发送量为 0。
9、安全扫描扫除漏洞问题。
Q1:报错 6003 解决方案。
1、请您检查下在客户端生成的指纹证书是否和AppGallery Connect网站上配置的“SHA256证书指纹”一致。
如果确认指纹证书没错:
2、请重新下载 agconnect-services.json 文件(确保是正确下载同一 appid 的文件,并存放在应用级 app 目录下),清除 HMS Core 缓存后重新尝试(应用-应用设置-搜索 hms core,清理 hms core 缓存)。
3、如果还是不行,请复现问题,抓取 push 日志。
日志提取办法:
1)使用 adb 连上手机后,执行下面命令:
adb logcat -v threadtime 1> D:\xxxx.log
尝试复现您遇到的问题场景。
等待几十秒,按快捷键“Ctrl+C”完成日志抓取。
生成日志后注意看下日志记录的时间段需要包含复现问题的时间点。
Q2:推送成功收不到消息,推送返回{"message":"success","requestID":"1523868*****2842718","resultcode":0}
排查步骤:
1、网络不稳定,切换稳定网络进行测试。
2、检查手机 EMUI 版本、小于 4.1 也是不支持的。
3、检查终端 token 是否正确,在联盟后台进行推送,如果联盟后台也推送失败则是 token 已失效、或者手机配置有问题,进行 token 检查和手机权限设置。如果能推送成功则,调用接口时参数配置错误导致。
4、检查 CP 是否使用的是老版本的 push,老版本 sdk 会出现消息延时很明显的情况,以及收不到推送,需要尽快切换到新版本。
5、搜集日志(详情见日志抓取办法),参考 push 日志解读进行排查。
Q3:推送收不到消息,如何排查?可能是什么原因造成?
1、您是否申请了自分类权益,华为目前有咨询营销类消息限制,没有使用自分类权益默认是资讯营销类消息,受到营销通知管控。
您可以通过申请自分类权益,来使用服务与通讯类消息。点击查看自分类权益申请、消息分类标准。
2、如果您目前只是需要进行测试,发测试消息的话在推送消息时可以设置 target_user_type 参数为 1。每个应用每日可发送 500 条测试消息且不受每日单设备推送数量上限要求。可参考下行消息API 。
或者您在网站推送时点击“效果测试”发送测试消息。
3、您也可以通过推送 requestID 和 token 在自助分析平台自助查询原因。
4、如果您这边还是无法定位问题,可以联系技术支持反馈问题。
Q4:如何在华为开放平台查看消息是属于运营消息还是通知系统消息?推送的时候带了 importance 字段,但是不能确定该字段是否生效?
华为的通知消息通过提醒方式来判断该条消息的类型。category 字段只有在申请自分类权益后才能生效,用于标识消息类型,importance 字段可以用于本地通知级别的设定。
具体介绍和申请自分类权益请参考链接。
Q5:离线角标不显示。
首先确认通过哪种方式使用角标。
第一种:华为提供的消息体加字段方式,这种方式不管应用在线或者离线,角标都会正常展示。
第二种:您在客户端代码设置角标,这种情况,应用离线的情况可能是没有对收到的离线消息进行处理所以角标没有加上。请参考华为桌面角标开发指导书。
如果使用了第一种,请确认离线消息的消息体是否有 add_num 和 set_num 字段;如果使用第二种,请确认收到离线消息之后是否调用代码加上角标。
Q6:关于回执问题处理。
1.应用设备不在线(损毁,断网,关机,不在服务器等情况)是没有回执的,一般这种情况占比较大。
2.用户关闭推送权限也是没有回执的。
3.因为回执只会发送一次,所以在网络异常或者服务器异常等情况导致的请求失败也是没有回执的。
Q7:CP 关于 https://api.push.hicloud.com 域名的使用问题。
SDK 2.0 URL:https://api.push.hicloud.com/pushsend.do
SDK 3.0+ URL:https://push-api.cloud.huawei.com/v1/[appId]/messages:send
https://api.push.hicloud.com/pushsend.do这个是 2.0 版本使用的接口,需要替换为最新的,替换的时候请及时更新 SDK 版本到最新版本 6.12.0,参考最新的文档做好迁移工作,同时迁移完成之后请测试一下推送功能是否正常使用,有异常麻烦及时处理。可参考SDK版本更新说明。
Q8:在 AGC 平台创建受众群组进行推送,发送量为 0。
创建受众群组首先需要接入分析服务,并且当天开通创建的受众群组 24 小时后才会生效。
Q9:安全扫描扫除漏洞:com.huawei.hms.support.api.push.service. HmsMsgService Service 组件的最小化特权是指组件只能自身调用,其他应用无权访问,即组件不导出。Service 执行的操作比较敏感,比如更新数据库、提供事件通知等,如果设置了导出权限,可能被系统或者第三方的 App 直接调出并使用。Service 导出可能导致拒绝服务攻击,程序功能被第三方恶意调用等风险。
Service 内部对调用方有校验,即使被攻击了,也不会处理。
该服务定义在 pushsdk 子进程中,供应用集成。业务场景为:Push 在非华为手机上,需要由 HMS 通过 bindSevice 方式发送通知栏或者透传消息给 App,由于 HMS 非系统应用,故该 service 无法定义具体应用级别的权限,同时在该服务内部有对调用方做权限校验,若校验非 HMS 拉起,则直接丢弃不处理。在华为手机上该服务无使用场景。
正常业务场景启动方式:bindService。该子进程本身只是做通知栏和透传消息解析使用,没有其他任何用处,同时也不是常驻进程。即使频繁 ANR 后该子进程会被强制关闭,对主进程也没有任何影响。即使不 ANR,资源紧张时,该进程也会被 android 回收强制关闭。
了解更多详情>>
评论