1. 程式人生 > >android整合華為push 6003錯誤,以及華為低版本crash問題

android整合華為push 6003錯誤,以及華為低版本crash問題

前段時間專案需要接入推送功能,最終對比選擇了使用極光推送,但是極光結束後臺程序是收不到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也解決了。提醒大家這種第三方的遇到一些莫名其妙的問題不要死磕。浪費不必要的時間。