1. 程式人生 > >Android整合信鴿推送【華為廠商通道之坑】

Android整合信鴿推送【華為廠商通道之坑】

Android整合信鴿推送(華為通道)之坑

公司App之前用的是騰訊信鴿推送【V3.2.2之前版本】前不久信鴿新增加了華為小米魅族廠商通道【V3.2.2之前版本】,然後就趕緊升級新增華為小米魅族廠商通道,提高推送成功率。

首先按照流程開始準備工作

  • 第一步升級信鴿SDK到v3.2.2,一切正常;
  • 新增新的依賴替換舊的Jar,新增混淆程式碼;
  • 新增華為小米魅族推送程式碼以及manifest中進行各種註冊許可權;

開始除錯工作

  • 單獨使用信鴿推送:開啟APP訊息透正常/殺死APP後還是也正常收不到訊息,走短息通道了(以前就是這個鬼樣子)
  • 首先是用華為手機在測試伺服器上鼓搗了一下不行;現【華為系統推送渠道】需要打包apk
    才可以
  • 於是打包apk;直接登入賬號,註冊成功一切和順利。在信鴿推送平臺上按賬號推送訊息透傳、推送欄都是秒到,感覺這樣信鴿推送整合華為通道就ok啦

出問題啦!

  • 初步測試ok後,換了個賬號再試;在信鴿推送平臺上無論是訊息透傳還是通知欄,apk開啟還是殺死,推送就是收不到;
  • 開啟log發現我切換賬號以後日誌就是這樣子(華為通道必須打包才行,沒法debug):
    這裡寫圖片描述
  • 信鴿開發文件【客戶端返回碼】中提示:10002:正在執行註冊操作時,又有一個註冊操作到來,則回撥此錯誤碼;
    這裡寫圖片描述

  • 初步定位:每次賬號退出時,呼叫信鴿解註冊失敗,App還註冊狀態,再次登入就信鴿重複註冊導致1002

  • 於是解除安裝apk【解註冊】,重新安裝登陸,推送,一切正常;退出再次登入又是10002,這樣確定是退出時解註冊的程式碼問題了;
  • 信鴿程式碼前任Android整合的,都沒有熟悉程式碼:信鴿V3.2.2由於整合廠商通道信鴿部分SKD中API做出修改,而且在V3.2.2失效
  • 修改註冊API解註冊API再在信鴿推送官網全部正常,本想華為通道總可以OK了吧。
  • 很快又發現在公司服務端推送的訊息華為手機收不到,但是是信鴿官網推送能收到,那應該是服務端程式碼問題的不是Android端的問題吧
  • 服務端開發檢查後說他那程式碼沒問題,他在信鴿SDK信鴿官網一致,而且服務端推送返回結果碼是:0,問題就應該是在Android端,服務端都是技術大牛他們那麼一說,結果問題回到Android端了
  • 折騰了很久沒有搞定,最後之前Android開發[轉JavaEE服務端],他說自己搞個服務端信鴿demo
    試一下不就知道了嘛,我是半路出家只會點Android搞了很久才搞出個Java的demo,結果demo所有推送華為手機秒到,確定是服務端程式碼的問題
  • 結果服務端的大佬發現問題是服務端SDK沒有升級,之前用pythonV1.1.8版本SDK,現在信鴿官網pythoySDK還是V1.1.8,但是下載解壓後發現裡面的SDK版本變成V1.1.8.3了;坑呀
  • 最後一個比較折騰的是:華為推送通道收到透傳訊息時,會拉起App的(例如:微信QQ)並且提示收到訊息,但我App沒有拉活,最後才發現是華為有個“自啟管理”只有開啟App的自啟許可權在收到透傳訊息會拉起App【微信QQ釘釘之類在華為應用商店前100的可以聯絡華為在系統中預設開啟的自啟許可權】

總結

  • 信鴿整合華為推送中遇到下面幾個坑 ,小夥伴留心啦:
    1. 測試華為通道時apk必須打包;有點像整合微信支付需要帶正式的簽名之類、
    2. 信鴿舊版升級的在V3.2.2中之前的部分api已經失效需要注意【尤其是註冊和解註冊】;
    3. 服務端SDK升級需留心,以Python服務端SDK為例:之前SDK是V1.1.8,但已經升級後SDK在官網寫的還是V1.1.8,下載解壓才發現已經升級為V1.1.8.3;據說連個升級說明都沒有,信鴿團隊就是這麼自信;
    4. 還有是在信鴿的SDK訊息透傳onTextMessage(Context context,XGPushTextMessage message)的XGPushTextMessage 中有個customContent對content作為補充的欄位,但是在華為推送透傳中只有titlecontent欄位,結果就是在V3.2.2SDK中信鴿團隊無情將customContent欄位拋棄了 ,如果有使用該欄位的小夥伴要及時修改

最後就修改不熟悉的程式碼先仔細看看一遍程式碼看一遍文件了,不然小心事倍功半了*