Android 個推 踩坑小結


公司一個項目之前在手機上一直可以正常運行,后來在平板上運行了一下,在歡迎頁面卡出了,一直沒有反應。

於是我就將項目在電腦上用Android Studio往平板上運行了一遍,看了下打印的Log日志,發現clientid(cid)一直獲取為空

因此暫將問題定位到該位置,發現這里有一個條件為true的while循環,里面不斷獲取cid,直到不為空才跳出

所以難怪總是卡在歡迎頁面沒有反應!

繼續看下去,cid是個推用來獲取手機、平板等設備的一個唯一標識,登錄的時候需要作為參數傳遞,這也是為什么前面要不斷獲取cid的原因了

但為什么為空呢???

各種查閱,並沒有解決問題,后來迫不得已,咨詢了一下個推的技術支持

1.首先確定了不是網絡問題,

2.因為手機可以正常運行,所以可以確定集成是沒有問題的,

3.然后將多余的cpu架構刪除了,so庫取最小

這樣還是沒能解決問題,后來技術支持說maven快速集成的只要在Manifest中加入自定義的Service和IntentService就可以了,

我又查閱了一下代碼,發現並沒有這兩個自定義Service,於是又在個推官網仔細看了一遍文檔,發現只有GTSDK2.9.5.0才有自定義Service,

將問題反饋給了技術支持,得知是因為項目目前使用的sdk版本過老,因為之前查閱資料也有看到過此回答,之前代碼也不是自己寫的,所以不想去更新現有sdk版本,怕后續會有隱患

技術支持也給出了合理的解釋:

1.為了讓推送服務在部分主流機型上更穩定運行,建議升級 最新版的sdk,老版本可能會導致在一些設備上獲取不到cid

2.老版本存在一些歷史bug,不能保證可以成功獲取到cid

聽到這,這才決定還是更新一下試試,當然更新前將代碼用git提交了一下,以防萬一......

然后依據官方文檔進行了更新,其實更新並沒有想象中那么可怕,而且文檔中也有需要修改的具體位置,很快就成功了!!!

 

接下來,在另一個同樣使用個推的項目運行到平板也出現了該情況......

於是乎,第一步在gradle中添加最新個推依賴就出現了問題

報錯如下:

Failed to resolve:com.getui:sdk:2.9.5.0

同樣的排除了網絡原因,然后各種sync也沒有用,最后還是想到了技術支持...

問題定位:直接問了我是否使用了什么網絡代理

然而我用的Ubuntu,雖然下有lantern,但並沒有打開啊...

然后將maven上的地址試了一下,也可以正常打開

后來,技術支持說Android Studio工程中所有.properties文件檢查一遍,帶有proxy的行全部去掉

於是我挨個排查了一遍,發現有個配置文件中加入了下面代碼

systemProp.http.proxyHost=127.0.0.1

systemProp.http.proxyPort=8087

為什么前一個項目沒有問題呢,於是又回頭看了一下前一個項目的配置文件,發現並沒有使用本機的,而是公司的一個host,苦惱...於是將這兩行注釋掉了,之后萬事大吉!

我前面也認為我的系統沒有使用任何代理,

於是又去請教了我的導師,讓我在命令行輸入echo $http_proxy查看系統是否使用了代理

果不其然,被篡改了!!!

導師告訴我lantern會修改系統的代理,在lantern的設置里關掉就可以了,修改完畢,心里美滋滋...

 

最后再說一句關於個推的,如果最新版有cid為空的時候,看下IntentService的初始化方法走了沒有,在解決問題過程中,自己也有不小心傳錯Service的時候...尷尬

還有就是個推的技術支持真的很有耐心,很強!很佩服,在使用第三方sdk的使用也一定要注意仔細閱讀官方文檔,按照步驟,正確的一步一步來,一般不會出現太大問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM