android集成华为push 6003错误,以及华为低版本cr

2021-04-09  本文已影响0人  程序猿TODO

前段时间项目需要接入推送功能,最终对比选择了使用极光推送,但是极光结束后台进程是收不到push消息的,需要我们自己去集成第三方平台,比如:小米,华为,魅族

极光接入华为:极光根据 EMUI 系统版本间差异,现采取的方案是 EMUI 4.1 及以上版本,使用 HMS 服务,通知 HMS 通道;对于 EMUI 4.1 以下版本还是⾛极光通道。

当初接入华为push时候 SHA256指纹证书设置成debug的证书了,后来发现证书指纹放错了,想修改成release的SHA256证书指纹,修改过后华为开发者联盟显示的也是修改过后的release的SHA256,但是使用release包经过测试项目发现 结束后台进程还是收不到push消息,而用华为开发者联盟上推送的push消息APP中是可以收到的。报错:6003(StatusCode.CERT_FINGERPRINT_ERROR)

华为官方的解释:

就纳闷了,SHA256证书指纹明明是修改过后的release怎么就收不到push消息呢。华为移动服务缓存也清理过了,等也不止10分钟了。实在找不到办法,试试debug结束进程能不能收到吧。结果用debug包发现结束进程是可以收到push消息的。问题定位出来了,原来是华为的证书指纹替换了并没有生效,还是原来的debug证书指纹在生效。后来找华为官方帮忙解决。官方给出的解释也是:这个证书一般不要轻易替换,替换之后有时候数据库缓存啥的偶尔会出现问题

晕,这种这么小概率的事情怎么就发生在我身上了呢!不过也是吃一堑长一智。希望大家如果遇到类似的问题也能得到尽快解决。避免不必要的时间浪费。

SHA256证书指纹弄好以后,本以为没啥问题了。后来使用低版本华为(EMUI3.0)手机发现打开项目直接crash,对比接入文档,极光和华为提供的和我自己接入的都一样的。没毛病啊。 最终问题定位在

<provider
            android:name="com.huawei.hms.update.provider.UpdateProvider"
            android:authorities="com.hjh.hdd.hms.update.provider"
            android:exported="false"
            android:grantUriPermissions="true"></provider>

去掉这个provider在低版本就不会crash,而且可以正常收到push。高版本华为也是可以的。但是加上终有加上的道理吧。

华为官方文档:这个provider是用户引导升级华为移动服务的。使用push是需要将华为移动服务升级到最新的。

但是加上低版本不兼容啊。怎么办怎么办?google了一圈也没找到解决办法。那就找华为的技术支持吧。

最终解决方案:在这个provider加个process标签可适配华为低版本crash问题,同时引导升级HMS也保留

 <!--华为推送-->
        <provider
            android:name="com.huawei.hms.update.provider.UpdateProvider"
            android:authorities="com.hjh.hdd.hms.update.provider"
            android:exported="false"
            android:process=":updateProvider"
            android:grantUriPermissions="true"></provider>

华为技术人员给出的解释是:之前有个别开发者也遇到客这个问题,最后加了一个守护进程就解决了,SDK编译的版本比较高的,Android4.4以后进程管理有了比较大的变化,低版本加了守护进程后,能够保证正常下载完毕。而且还与集成有关系,复杂一点的项目有时候会出现问题 复杂项目结构,涉及到进程之间的交互,容易出不好定位的问题

到此推送遇到的莫名BUG也解决了。提醒大家这种第三方的遇到一些莫名其妙的问题不要死磕。浪费不必要的时间。

上一篇下一篇

猜你喜欢

热点阅读