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欄位就完成了!!!
有說的不對的地方,歡迎大傢俬信指正!
祝:工作順利!