1. 程式人生 > >Android 接入華為通知欄推送教程(特此整理)

Android 接入華為通知欄推送教程(特此整理)

前言:

      受華為開發者聯盟工作人員的邀約,特此將本篇部落格重新整理一遍,希望讓更多人受益,大家也可以參加華為開發者聯盟推出活動,去提問自己的問題或者投稿。

掃二維碼就可以參與活動哦。

首先本教程是基於華為推送 2.5.2.300 版本的

一:注意事項

1. 華為推送在emui 4.1 以上才能收到推送

2. 華為i推送在emui 4.1到 5.0 之間是控制不了在應用內不接受通知的,5.1以上可以

3. 華為推送通知欄是不疊加角標未讀數的,透傳可以實現!

4.. 華為推送需要把華為移動服務升級到最新版哦

5. 新版setTag/getTag/deleteTag功能暫時不能使用

二:示例程式碼

1.  EMUI版本號判斷程式碼如下:(判斷emuiApiLevel>=9即可)

int emuiApiLevel = 0;            

        try {            

            Class cls = Class.forName("android.os.SystemProperties");            

            Method method = cls.getDeclaredMethod("get", new Class[]{String.class});            

            emuiApiLevel = Integer.parseInt((String) method.invoke(cls, new Object[]{"ro.build.hw_emui_api_level"}));            

        } catch (Exception e) {            

            e.printStackTrace();            

        }      

2. 判斷華為移動服務版本號程式碼如下:(判斷hwid>=20401300即可)

PackageInfo pi = null;            

        PackageManager pm = context.getPackageManager();            

        int hwid = 0;            

        try {            

            pi = pm.getPackageInfo("com.huawei.hwid", 0);            

            if (pi != null) {            

                result = pi.versionCode;            

            }            

        } catch (PackageManager.NameNotFoundException e) {            

            e.printStackTrace();            

        } 

三:正文

大家檢視華為推送的文件時有沒有感覺雲裡霧繞的,本教程希望可以幫到你噢。

華為推送分為新版(HMS SDK)和舊版(PUSH SDk),本教程使用的是新版的HMS SDK 的通知欄推送! 通知欄推送! 通知欄推送!  重要的事情說三遍。。。 經過測試華為的通知欄推送在華為手機上類似於蘋果的APNS,送達率挺理想的,透傳的話沒有這麼高的送達率,自己測試的。

 通知欄推送是可以帶附加欄位的哦!!!可以滿足我們的一些其他的需求。

大家看到這有沒有一個疑問呢?HMS AGent套件是什麼鬼疑問疑問疑問,還必選,其實它就是一個demo,測試用的,裡面有華為的好多服務,不只push噢

注意:請務必檢視Demo中關於推送的程式碼。

四:配置方式

1.  Android Studio 配置方式:

 maven倉庫

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

  gradle 依賴新增  

implementation 'com.huawei.android.hms:push:2.5.2.300'

2.  eclipse的配置是下載jar包

五:intent欄位說明

     其他的按照文件去做就行了噢,很簡單的,下面主要說一下intent欄位配置,主要用來操作點選通知後的動作的,相信大家剛看到的時候也是懵逼的狀態吧。華為推送平臺有這樣一段描述:

    

後來才反應過來,其實就是在要開啟的activity裡面加上配置,然後生成一個URI 配置在後臺就可以了

<intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:host="com.picchost.push"-------------按自己的專案配置
                    android:path="/hwpush_detail"
                    android:scheme="piccscheme"/>------------------按自己的專案配置
        </intent-filter>

然後在程式裡把URI打印出來給配置在服務端上就行了:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("piccscheme://com.picchost.push/hwpush_detail?message=what"));
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        String intentUri = intent.toUri(Intent.URI_INTENT_SCHEME);
        Log.e("huaweipush","action是:" + intentUri);

注意:把引數替換成自己的引數。

打印出來是這樣的就對了:

intent://com.picchost.push/hwpush_detail?message=what#Intent;scheme=piccscheme;launchFlags=0x20000;end

注意:一定不要忘了把打印出來的URI配置在服務端,否則intent欄位不生效。

intent欄位就完成了!!!

有說的不對的地方,歡迎大傢俬信指正!


祝:工作順利!