4-2.2 Android華為推送集成與測(cè)試

Android的推送一直是個(gè)大坑,好在統(tǒng)一聯(lián)盟的的推送在測(cè)試了钾恢,希望早點(diǎn)一統(tǒng)推送,挖去開(kāi)發(fā)者的心病吧鸳址。在此之前瘩蚪,該踩坑還是踩坑,按官方文檔一步步踩吧稿黍。

集成

官方的開(kāi)發(fā)準(zhǔn)備

  • 先集成必備套件 HMS SDK Agent

  1. 下載地址:HMSAgent_2.6.3.301.zip
  2. 解壓后運(yùn)行GetHMSAgent_cn.bat文件生成我們所需的文件疹瘦,輸入我們的應(yīng)用包名和后臺(tái)配置應(yīng)用生成的appid,回車(chē)運(yùn)行巡球, cpid沒(méi)有可以跳過(guò)繼續(xù)言沐,按需集成所需要的功能。


    解壓目錄酣栈、執(zhí)行文件和生成后文件夾.png
    命令執(zhí)行過(guò)程.png
  3. 代碼拷貝
  • 標(biāo)準(zhǔn)的AS項(xiàng)目直接拷貝到app/src/main/下即可
  • 轉(zhuǎn)換成AS項(xiàng)目的我將java下的文件夾及AppManifestConfig.xml文件拷貝至src/下险胰,結(jié)構(gòu)如圖
    拷貝后目錄結(jié)構(gòu).png
生成文件目錄.png
  • 自動(dòng)集成

項(xiàng)目build.gradle配置

 allprojects {
            repositories {
                ···
                maven {url 'http://developer.huawei.com/repo/'}
            }
        }  

app的build.gradle配置

 dependencies {
    ···
    //說(shuō)明:{version} 替換為實(shí)際的版本號(hào),如:compile 'com.huawei.android.hms:push:2.6.3.301'    
    compile 'com.huawei.android.hms:push:{version}'         
  }        
    

最后進(jìn)行同步配置

  • 手動(dòng)集成

畢竟現(xiàn)在都用AS了矿筝,自動(dòng)集成的方便手動(dòng)集成你想象不到啊起便,奈何還有Eclipse轉(zhuǎn)成AS的項(xiàng)目,怎么都下載不到依賴(lài)包,只能老老實(shí)實(shí)手動(dòng)集成了

  • SDK下載:hmssdk-gradle-2.6.3.301.zip
  • 解壓后進(jìn)行代碼拷貝榆综,這里文件夾結(jié)構(gòu)簡(jiǎn)單妙痹,直接全部復(fù)制到對(duì)應(yīng)工程相應(yīng)文件夾即可
    解壓目錄.png

    好像。鼻疮。怯伊。也挺簡(jiǎn)單。判沟。耿芹。

開(kāi)始配置與初始化

  1. 配置manifest文件<記得更改appid和${PACKAGE_NAME}>
    因?yàn)楫?dāng)前應(yīng)用只需要推送功能,所以我只集成了推送必須項(xiàng)
  • 配置appid application節(jié)點(diǎn)下
<meta-data  
   android:name="com.huawei.hms.client.appid"  
   <!-- value的值“xxx”用實(shí)際申請(qǐng)的應(yīng)用ID替換水评,來(lái)源于開(kāi)發(fā)者>聯(lián)盟網(wǎng)站應(yīng)用的服務(wù)詳情猩系。-->  
   android:value="appid=xxx">  
</meta-data>    
  • 配置自定義的Application,這個(gè)開(kāi)發(fā)過(guò)程中我們都會(huì)做的
  • 配置BridgeActivity --定義了HMS SDK中一些跳轉(zhuǎn)所需要的透明頁(yè)面
<activity  
   android:name="com.huawei.hms.activity.BridgeActivity"  
   android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"  
   android:excludeFromRecents="true"  
   android:exported="false"  
   android:hardwareAccelerated="true"  
   android:theme="@android:style/Theme.Translucent" >  
   <meta-data  
       android:name="hwc-theme"  
       android:value="androidhwext:style/Theme.Emui.Translucent" />  
</activity>
  • 在manifest節(jié)點(diǎn)下增加所需權(quán)限
<!--HMS-SDK引導(dǎo)升級(jí)HMS功能中燥,訪(fǎng)問(wèn)OTA服務(wù)器需要網(wǎng)絡(luò)權(quán)限-->    
<uses-permission android:name="android.permission.INTERNET" />    
<!--HMS-SDK引導(dǎo)升級(jí)HMS功能寇甸,保存下載的升級(jí)包需要SD卡寫(xiě)權(quán)限-->    
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
<!--檢測(cè)網(wǎng)絡(luò)狀態(tài)-->  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
<!--檢測(cè)wifi狀態(tài)-->  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
<!--為了獲取用戶(hù)手機(jī)的IMEI,用來(lái)唯一的標(biāo)識(shí)用戶(hù)疗涉。-->  
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

<!--如果是安卓8.0拿霉,應(yīng)用編譯配置的targetSdkVersion>=26,請(qǐng)務(wù)必添加以下權(quán)限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

<!-- 接收PUSH TOKEN的廣播以及PUSH消息需要定義該權(quán)限 ${PACKAGE_NAME} 要替換上您應(yīng)用的包名 -->
   <permission
       android:name="${PACKAGE_NAME}.permission.PROCESS_PUSH_MSG"
       android:protectionLevel="signatureOrSystem"/>

<!--接收PUSH TOKEN的廣播以及PUSH消息需要定義該權(quán)限 ${PACKAGE_NAME} 要替換上您應(yīng)用的包名 -->
    <uses-permission android:name="${PACKAGE_NAME}.permission.PROCESS_PUSH_MSG" />
  • 配置Receiver
<!-- 接入HMSSDK PUSH模塊需要注冊(cè)咱扣,第三方相關(guān) :接收Push消息(注冊(cè)绽淘、透?jìng)飨ⅰ⑼ㄖ獧邳c(diǎn)擊事件)廣播闹伪,此receiver類(lèi)需要開(kāi)發(fā)者自己創(chuàng)建并繼承com.huawei.hms.support.api.push.PushReceiver類(lèi)沪铭,參考示例代碼中的類(lèi):com.huawei.hmsagent.HuaweiPushRevicer-->

       <!--“xxx”用實(shí)際的類(lèi)名替換, ${PACKAGE_NAME} 要替換上您應(yīng)用的包名-->
       <receiver android:name=".receiver.HWReciver"
           android:permission="com.foxhis.kft.permission.PROCESS_PUSH_MSG">
           <intent-filter>
               <!-- 必須,用于接收token -->
               <action android:name="com.huawei.android.push.intent.REGISTRATION" />
               <!-- 必須, 用于接收透?jìng)飨?-->
               <action android:name="com.huawei.android.push.intent.RECEIVE" />
               <!-- 必須, 用于接收通知欄消息點(diǎn)擊事件 此事件不需要開(kāi)發(fā)者處理,只需注冊(cè)就可以-->
               <action android:name="com.huawei.intent.action.PUSH_DELAY_NOTIFY"/>
           </intent-filter>
       </receiver>
配置自己的HWReciver.png
  1. Agent初始化
    在自定義的Application中的onCreat中調(diào)用com.huawei.android.hms.agent.HMSAgent.init(this);

使用與測(cè)試

  1. 調(diào)用獲取token
    開(kāi)發(fā)文檔要求:調(diào)用connect偏瓤、請(qǐng)務(wù)必在應(yīng)用啟動(dòng)后的首個(gè)activity的onCreate方法中調(diào)用connect接口杀怠,確保HMS SDK和HMS APK的連接。
    因?yàn)槲疫@邊是一進(jìn)去就執(zhí)行獲取token厅克,因此我將連接與申請(qǐng)抽成一個(gè)方法然后在啟動(dòng)的Activity的onCreate中執(zhí)行
    image.png
  2. 推送測(cè)試與錯(cuò)誤碼
    華為推送通道因?yàn)轭A(yù)先配置了SHA256指紋信息赔退,后期測(cè)試時(shí)需要簽名打包才能進(jìn)行測(cè)試,所以這里可以預(yù)先更改下debug包的簽名模式來(lái)方便調(diào)試证舟,注意signingConfigs一定要在buildTypes之前硕旗,否則會(huì)出錯(cuò)
    debug簽名配置.png

    運(yùn)行后輸出log日志,根據(jù)返回的code來(lái)對(duì)比通用錯(cuò)誤碼判斷是否成功
    獲取成功.png

過(guò)程中剛開(kāi)始一直拿不到token女责,四處翻找之后過(guò)一會(huì)又可以了漆枚,初步懷疑中間有什么耗時(shí)配置,后期會(huì)好很多抵知,擁有token之后就可以去后臺(tái)進(jìn)行測(cè)試了浪读,推送還是很快的

獲取簽名包證書(shū)指紋信息 SHA256獲取

keytool.exe -printcert -jarfile ....\release\app-release.apk
image.png

坑補(bǔ)充

  • 華為暢玩系列 無(wú)法拿到token
    幾經(jīng)周折昔榴,咨詢(xún)了華為push人員,得到結(jié)論碘橘,閹割版系統(tǒng)(運(yùn)行內(nèi)存為2g的就會(huì)被閹割)的華為手機(jī)是沒(méi)辦法去接入這推送的,調(diào)試過(guò)程中我也發(fā)現(xiàn)吱肌,暢玩7的手機(jī)應(yīng)用與通知管理里面是沒(méi)有應(yīng)用管理的痘拆,同樣我沒(méi)辦法找到華為移動(dòng)服務(wù),下載的apk也是沒(méi)辦法安裝成功的氮墨,所以對(duì)于這種裝不了華為移動(dòng)服務(wù)的華為手機(jī)纺蛆,請(qǐng)放棄對(duì)它的繼續(xù)調(diào)試吧!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末规揪,一起剝皮案震驚了整個(gè)濱河市桥氏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猛铅,老刑警劉巖字支,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異奸忽,居然都是意外死亡堕伪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)栗菜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)欠雌,“玉大人,你說(shuō)我怎么就攤上這事疙筹「欢恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵而咆,是天一觀的道長(zhǎng)霍比。 經(jīng)常有香客問(wèn)我,道長(zhǎng)翘盖,這世上最難降的妖魔是什么桂塞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮馍驯,結(jié)果婚禮上阁危,老公的妹妹穿的比我還像新娘。我一直安慰自己汰瘫,他們只是感情好狂打,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著混弥,像睡著了一般趴乡。 火紅的嫁衣襯著肌膚如雪对省。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天晾捏,我揣著相機(jī)與錄音蒿涎,去河邊找鬼。 笑死惦辛,一個(gè)胖子當(dāng)著我的面吹牛劳秋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胖齐,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼玻淑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了呀伙?” 一聲冷哼從身側(cè)響起补履,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剿另,沒(méi)想到半個(gè)月后箫锤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驰弄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年麻汰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戚篙。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡五鲫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岔擂,到底是詐尸還是另有隱情位喂,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布乱灵,位于F島的核電站塑崖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏痛倚。R本人自食惡果不足惜规婆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝉稳。 院中可真熱鬧抒蚜,春花似錦、人聲如沸耘戚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)收津。三九已至饿这,卻和暖如春浊伙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背长捧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工嚣鄙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人串结。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓拗慨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親奉芦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361