android 華為推送集成

由于谷歌服務(wù)中國無法使用,android推送一直是一個大問題猴蹂,低版本的android通過極光推送等,可以通過喚醒的方式從而達到消息送達的目的,但是隨著版本的升級姐扮。極光推送在APP被殺死之后無法被喚醒,從而無法接受到推送的消息(極光推送有集成系統(tǒng)級推送方案但是收費衣吠,騰訊信鴿茶敏、友盟現(xiàn)在免費集成了系統(tǒng)通道)。下面主要是說華為推送的集成缚俏。
華為推送地址
首先咱們需要進行開發(fā)者注冊惊搏,并且認證、獲取SHA256證書指紋這些步驟就不說了忧换。說集成的具體步驟(android studio集成方式)恬惯。
第一步 下載HMS SDK Agent套件 套件下載地址(如果地址不可用的話請直接在上面華為推送地址里面自行查找) ,下載完成后進行解壓亚茬,里面有“readme.txt”有各個文件的說明酪耳,我們需要運行“GetHMSAgent_cn.bat”這個文件,然后根據(jù)提示輸入包名刹缝、appid,如果只集成推送的話只輸入這兩個幾個碗暗,cpid 直接點擊回車即可,然后根據(jù)提示選擇是否為游戲梢夯,然后輸出一個文件夾言疗,“copysrc”這個文件夾,我們需要把“AndroidManifest.xml” 里面的內(nèi)容復(fù)制到自己項目“AppManifestConfig.xml”中颂砸,然后“java”中的復(fù)制到自己項目中噪奄,路徑形式和文件中保持一致 如下圖所示。

項目結(jié)構(gòu)圖.png

第二步 打開項目的build.gradle文件人乓,如下圖!
項目的build.gradle.png

在allprojects->repositories 里面配置HMS SDK的maven倉勤篮。

            repositories {
                jcenter()
                maven {url 'http://developer.huawei.com/repo/'}
            }
        }   

第三步 打開工程app下的build.gradle文件,如下圖色罚。


工程builde.gradle.png

配置依賴文件 (這里配置的版本號是2.6.3.301)

  dependencies {
   implementation 'com.huawei.android.hms:push:2.6.3.301'   
  } 

第四步 以上配置完資源叙谨,我們需要新建一個“PushReceiver” 并且繼承“PushReceiver” 具體路徑“com.huawei.hms.support.api.push.PushReceiver” 中簡單方法如下

public class MyPushReceiver extends PushReceiver {
    @Override
    public void onToken(Context context, String token) {
        super.onToken(context, token);
        Log.e("====token======>>>", "" + token);
    }

    @Override
    public boolean onPushMsg(Context context, byte[] msgBytes, Bundle extras) {
        return super.onPushMsg(context, msgBytes, extras);
    }

    @Override
    public void onPushState(Context context, boolean pushState) {
        super.onPushState(context, pushState);
    }
}

然后還需新建“MyApplication” 繼承“Application”并且對華為推送進行初始化

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        HMSAgent.init(this);
    }
}

然后在“AndroidManifest.xml”配置application的name屬性

 <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

然后在“AndroidManifest.xml”替換下面receiver的name 為剛才新建的“MyPushReceiver”

 <receiver
            android:name=".MyPushReceiver"
            android:permission="com.im.oa.myapplication.permission.PROCESS_PUSH_MSG">
            <intent-filter>
                <!-- 必須,用于接收token -->
                <action android:name="com.huawei.android.push.intent.REGISTRATION" />
                <!-- 必須, 用于接收透傳消息 -->
                <action android:name="com.huawei.android.push.intent.RECEIVE" />
                <!-- 必須, 用于接收通知欄消息點擊事件 此事件不需要開發(fā)者處理保屯,只需注冊就可以-->
                <action android:name="com.huawei.intent.action.PUSH_DELAY_NOTIFY" />
            </intent-filter>
        </receiver>

第五步 在啟動頁請求一下華為推送

 HMSAgent.connect(this, new ConnectHandler() {
            @Override
            public void onConnect(int rst) {
                Log.e("====connect======>>>", "" + rst);
            }
        });
        HMSAgent.Push.getToken(new GetTokenHandler() {
            @Override
            public void onResult(int rst) {
                Log.e("====getToken=====>>>", "" + rst);
            }
        });

其中rst為0時表示成功,其他錯誤碼參考華為推送錯誤碼
當(dāng)上面rst為0時 涤垫,“MyPushReceiver”中會接受到華為分配的token姑尺,我們可以拿著這個token在華為控制臺來進行推送測試。

寫在最后蝠猬,由于華為推送沒有向極光推送那樣的設(shè)置別名的方法切蟋,所以我們需要把華為分配的token記錄到自己的庫中,推送時根據(jù)用戶取出相應(yīng)token榆芦,并且我還沒有找到華為的推送記錄在哪里柄粹,所以最好做一下消息同送回執(zhí)喘鸟。

寫在最后

數(shù)據(jù)庫記錄token的字段一定要設(shè)置足夠長,由于我是榮耀手機并且官方文檔中token實例和我手機生成的token一模一樣驻右,我以為所有華為(包括榮耀)手機生成token長度一樣什黑,所以我數(shù)據(jù)庫設(shè)計長度為50,萬萬沒想到華為有的手機(emui9.1不知道和這個有沒有關(guān)系)生成的token長度特別長堪夭,導(dǎo)致數(shù)據(jù)庫存儲失敗愕把,所以無法進行推送。切記這個坑I:藁怼!爬迟!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橘蜜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子付呕,更是在濱河造成了極大的恐慌计福,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凡涩,死亡現(xiàn)場離奇詭異棒搜,居然都是意外死亡,警方通過查閱死者的電腦和手機活箕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門力麸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人育韩,你說我怎么就攤上這事克蚂。” “怎么了筋讨?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵埃叭,是天一觀的道長。 經(jīng)常有香客問我悉罕,道長赤屋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任壁袄,我火速辦了婚禮类早,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嗜逻。我一直安慰自己涩僻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逆日,像睡著了一般嵌巷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上室抽,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天搪哪,我揣著相機與錄音,去河邊找鬼狠半。 笑死噩死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的神年。 我是一名探鬼主播已维,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼已日!你這毒婦竟也來了垛耳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤飘千,失蹤者是張志新(化名)和其女友劉穎堂鲜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體护奈,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡缔莲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了霉旗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痴奏。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厌秒,靈堂內(nèi)的尸體忽然破棺而出读拆,到底是詐尸還是另有隱情,我是刑警寧澤鸵闪,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布檐晕,位于F島的核電站,受9級特大地震影響蚌讼,放射性物質(zhì)發(fā)生泄漏辟灰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一篡石、第九天 我趴在偏房一處隱蔽的房頂上張望芥喇。 院中可真熱鬧,春花似錦夏志、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湿诊。三九已至,卻和暖如春瘦材,著一層夾襖步出監(jiān)牢的瞬間厅须,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工食棕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朗和,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓簿晓,卻偏偏與公主長得像眶拉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子憔儿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容