項(xiàng)目中要做離線仍然能接受推送的功能派继,只能集成有系統(tǒng)通道的各大廠商的推送宾袜,環(huán)信上有小米和華為的集成,但是我司的服務(wù)端無(wú)法更改環(huán)信上的小米和華為推送的內(nèi)容驾窟,只能顯示“您有一條新消息”庆猫,無(wú)奈只能單獨(dú)集成小米華為魅族推送。OPPO推送處于公測(cè)階段且應(yīng)用等級(jí)要達(dá)到OPPO規(guī)定的A級(jí)绅络,只能以后再去添加月培,
本文主要側(cè)重集成時(shí)遇到的坑:
小米推送:
一.根據(jù)小米官網(wǎng)進(jìn)行配置,文檔寫的比較詳細(xì)恩急,這里就提一下流程
1.在小米推送運(yùn)營(yíng)平臺(tái)創(chuàng)建應(yīng)用杉畜,?獲取到 AppID , AppKey
2.把從小米下載的 jar 放到 libs 下
3.在 AndroidManifest.xml 中添加權(quán)限
4.配置推送服務(wù)需要的service和receiver
5.自定義一個(gè)BroadcastReceiver類集成PushMessageReceiver
6.在 AndroidManifest.xml 中注冊(cè)該廣播
7.在 Application 中初始化推送服務(wù)
集成順利,沒遇到什么坑衷恭,但是和環(huán)信配合使用時(shí)此叠,離線時(shí)正常有小米推送,但是在線時(shí)只需要換新推送随珠,去掉小米推送灭袁。我的處理方式是接收到后立馬刪除。
后期維護(hù)時(shí)遇到小米推送接收消息延遲問題窗看,而且有時(shí)延遲時(shí)間達(dá)到十分鐘以上茸歧,最后小米技術(shù)人員給出的解決方案:流控功能在擁堵時(shí)會(huì)影響消息的送達(dá)速度,請(qǐng)關(guān)掉flow control再試試显沈。我司后臺(tái)按照提示改過(guò)后就好了举娩。
華為推送:
說(shuō)實(shí)話華為推送真不咋地,文檔不光寫的爛构罗,而且連一些最基本的方法都沒有。和華為技術(shù)人員交流給的答復(fù)是:目前是簡(jiǎn)單的通知欄消息智玻,為了用戶體驗(yàn)遂唧,是沒有相關(guān)方法進(jìn)行配置的。哎呦我這暴脾氣吊奢!自己沒寫就沒寫盖彭,說(shuō)什么用戶體驗(yàn)纹烹!
我用的是華為新版的推送:HMS SDK
一。推送接入:(根據(jù)官方文檔接入召边,我這里簡(jiǎn)單寫一下)
1.從HMS Agent中篩選出自己需要的文件铺呵,下載后根據(jù)文檔在在命令行中刪除不需要的文件,將剩下的hms文件粘貼到項(xiàng)目中隧熙,并更改報(bào)錯(cuò)位置片挂。(因?yàn)槲业氖莔ac,搞這個(gè)玩意可把我累死了)
2.生成證書指紋(這個(gè)挺坑的贞盯,一定獲取的是正式版的音念,開發(fā)版的只用于測(cè)試。)并獲取appid和appkey
在studio上獲取證書指紋:在Terminal上輸入:
keytool -list -v -keystore jks的完整路徑.jks
3.配置?maven倉(cāng)庫(kù)和和 gradle?
4.然后根據(jù)文檔配置清單文件(權(quán)限瘫析,服務(wù)团搞,廣播等)
5.混淆
6.在application的onCreate方法中初始化HMSAgent
7.在首個(gè)Activity的onCreate方法中疼燥,調(diào)用申請(qǐng)token接口。之后會(huì)觸發(fā)啟動(dòng)Push服務(wù)讥脐,token申請(qǐng)成功后,結(jié)果會(huì)通過(guò)廣播的方式返回token給應(yīng)用啼器。調(diào)用getToken方法發(fā)起請(qǐng)求
以上為華為推送的集成旬渠,但是應(yīng)用在線狀體下同時(shí)收到環(huán)信和華為的推送,但是華為推送并沒有刪除通知欄的方法镀首,無(wú)奈只能刪除環(huán)信發(fā)來(lái)的通知欄消息坟漱。
當(dāng)時(shí)環(huán)信使用的是3.3.8版本的,此版本包含華為的舊版本推送更哄,造成沖突芋齿,報(bào)錯(cuò)NoSuchMethodError: No virtual method isHuaweiMobileServicesAvailable。將環(huán)信更新3.4.3版本就可以了成翩。
魅族推送:
魅族推送有兩種觅捆,一種是只針對(duì)魅族系統(tǒng)的Flyme還有一種可以集成小米華為魅族的全通道方式Ups,因?yàn)槲?已經(jīng)集成了小米麻敌,華為推送栅炒,所以我選擇了集成Flyme SDK
集成方式和上面小米華為類似,這里不贅述了术羔,我說(shuō)一下我遇到的坑赢赊。
1.appId的獲取錯(cuò)誤。APPId是我司產(chǎn)品人員生成好給我的级历,經(jīng)過(guò)測(cè)試不能用释移,最后發(fā)現(xiàn)魅族在應(yīng)用平臺(tái)生成的推送不能用,需要在推送平臺(tái)重新生成一個(gè)推送應(yīng)用寥殖,但是這個(gè)生成的APPID也不能用玩讳,點(diǎn)擊打開應(yīng)用涩蜘,最上面點(diǎn)擊配置管理,之后最下面的魅族渠道的APPID才是正確的熏纯。之后點(diǎn)擊”魅族推送到后臺(tái)“同诫,在這里測(cè)試推送才是正確的。