项目中集成了MobPush,同时配置厂商通道(小米、华为......),目前遇到的华为推送SDK在初始化的时候报错:
06-22 14:10:27.691 10806-10846/com.****** I/MobPushLogger: [MobPush][HUAWEI] plugin ready
06-22 14:10:27.708 10806-10846/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel start init
06-22 14:10:27.873 10806-10806/com.****** I/MobPushLogger: [MobPush]getRegistrationId
06-22 14:10:28.745 10806-10806/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel connection failure, errorCode: 907135701
06-22 14:10:28.757 10806-10806/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel connection failure, errorMessage:success
可以从日志中看到:errorCode: 907135701,经查询华为开发文档:
文档地址:
https://developer.huawei.com/consumer/cn/doc/development/HMS-References/hms-error-code
这个错误一般是华为开发这账号里关于推送的配置信息不对导致。但是我根据Mob给到的集成文档:https://www.mob.com/wiki/other?slug=hauweishenqing11
反复检查了配置信息,都没发现哪里配置的不对。万般无措之行,只好求助Mob的技术支持,这里必须给Mob的技术支持点赞(👍👍👍),他们服务耐心,态度友好,尽心帮助我这样的菜鸟解决问题。
回归正题,Mob的技术支持配合我走查了应用在MobPush和华为推送的相关配置信息,确实没发现什么问题,最后是通过查看打包后的APK(反编译or解压)里的manifest文件里meta-data配置的appId和华为推送后台的appId不一样,manifest里的appId缺失了一位(第一位丢失),如下图:
我之前也咨询了华为推送的技术,他们的技术支持给到的反馈如下图:
推测问题是:APP中的appId和华为推送后台的appId不一致。
问题是我在项目中明明配置了appId,而且检查了好的遍,确认没写错,可是为啥编译打包成APK后出现appId缺失了第一位,突然想起我之前分享的一篇文章:https://www.jianshu.com/p/4925d67ac64e
AS在编译时,MobPush的配置在编译后被转义了,导致信息丢失。所以也需做下转义处理:
MobPush {
debugLevel 4
devInfo {
HUAWEI {
appId "/102***10"
}
......
}
}
转义处理后再编译和打包测试,通过AS自带的 Analyze APK 工具查看应用包中manifest里配置的华为appId,步骤如下:
1)在AS工具栏中找到Build菜单中选择Analyze APK
2)然后选择要分析的apk包
3)找到AndroidManifest.xml中配置华为的appId
此时你会发现配置的appId正常了。然后你在AS的logcat中查看日志信息:
06-22 16:32:09.353 26579-26626/com.****** I/MobPushLogger: [MobPush][HUAWEI] plugin ready
06-22 16:32:09.354 26579-26626/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel start init
06-22 16:32:09.469 26579-26579/com.****** I/MobPushLogger: [MobPush]getRegistrationId
06-22 16:32:10.421 26579-26579/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel connection successful.
06-22 16:32:10.424 26579-26804/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel appId==null
06-22 16:32:10.523 26579-26806/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel regId: 0866945020910229300006325100CN01
06-22 16:32:10.523 26579-26806/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel register successful.
06-22 16:32:10.626 26579-26804/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel token==
06-22 16:32:10.639 26579-26810/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel regId: 0866945020910229300006325100CN01
06-22 16:32:10.639 26579-26810/com.****** I/MobPushLogger: [MobPush][HUAWEI] channel register successful.
从log中可以看出华为推送SDK初始化完成并注册成功。
希望对遇到此问题的同鞋有所帮助😊。