【FAQ】推送服务常见问题及解决方案
一、推送成功收不到消息,推送返回:{"message":"success","requestID":"1523868*****2842718","resultcode":0}
排查步骤:
1、网络不稳定,切换稳定网络进行测试;
2、检查手机是否为 EMUI8.0.0 系统,如果是早期的 EMUI8.0,则要升级尝试(在手机会员服务——服务——升级尝鲜),或者用 targetversion 26 以下的进行编译来规避这个问题。EMUI 版本太低、小于 4.1 也是不支持的;
3、检查终端 token 是否正确,在联盟后台进行推送,如果联盟后台推送失败则是 token 已失效,或者手机配置有问题;进行 token 检查和手机权限设置,如果推送成功,那么之前失败则是调用接口时参数配置错误导致;
4、如果是收取通知消息失败,检查通知的 playload 中的 msg、appPkgName 等配置是否正确;
5、检查华为移动服务的缓存问题,尝试清除数据及缓存,并停止华为移动服务;
6、检查 CP 是否使用老版本 Push,老版本 SDK 会出现消息延时较明显以及收不到推送的情况,需尽快切换到新版本;
7、搜集日志(详情见日志抓取办法),参考 Push 日志解读进行排查。
二、Gettoken 返回 0,无法进入 onToken 函数,无法收到广播。
1、自定义的 Receiver 是否继承华为 PushReceiver;
2、AndroidMainfest 配置是否完善,请对照现网配置进行检查;
3、保存日志,并发过来;
4、清理华为移动服务和应用的缓存、数据,重启手机。再进入应用试一下;
5、如果日志中出现 get token:end 0 和 com.huawei.android.pushagent.PushServiceE/PushLog2551: [ReceiverDispatcher-230]responseRegisterTokenFAILED:1(android/PushCommandProcessor.java:557) 表示此处华为移动服务状态是正常的,但是请求服务器出现异常。检查联盟推送状态是否为“已开通”,状态为开通中则是错误的。
如果问题还未得到解决可以重复步骤 4,准备日志输出,运行测试应用,打印日志。
三、如何在华为开放平台查看消息是属于运营消息还是通知系统消息?我们推送的时候带了 importance 字段,但是不能确定该字段是否生效。
华为的通知消息通过提醒方式来显示该条消息的类型。importance 字段只有在申请自分类权益后才能生效。
申请自分类权益参考:自动权益申请
四、离线角标不显示。
1、首先需确认是通过哪种方式使用角标。
第一种:华为提供的消息体加字段方式,这种方式不管应用在线或者离线,角标都会正常展示。
参考资料:桌面角标
第二种:您在客户端代码设置角标,这种情况,应用离线的情况可能是没有对收到的离线消息进行处理所以角标没有加上。
参考资料:华为桌面角标开发指导书
2、在确认使用的角标方式后进行排查。
如果使用了第一种,确认离线消息的消息体是否有 add_num 和 set_num 字段;如果是第二种,需确认收到离线消息之后是否调用代码加上角标。
五、关于回执问题处理。
1、应用设备不在线:损毁,断网,关机,不在服务器等(大多情况);
2、用户关闭推送权限;
3、回执只会发送一次,在网络异常或者服务器异常等情况时会导致请求失败。
六、CP 关于 https://api.push.hicloud.com 域名的使用问题。
SDK 2.0 URL:https://api.push.hicloud.com/pushsend.do ?ha_source=hms1
SDK 3.0+ URL:https://push-api.cloud.huawei.com/v1/[appId]/messages:send?ha_source=hms1
SDK 2.0 URL 是 2.0 版本使用的接口,可以替换为最新版,替换的同时更新 SDK 版本到 6.7.0,参考最新的文档做好迁移工作,迁移完成之后可以测试一下推送功能是否正常使用,有异常及时处理。可参考 SDK 版本更新说明:版本更新说明。
了解更多详情>>
获取开发指导文档
关注我们,第一时间了解 HMS Core 最新技术资讯~
评论