首先本教程是基于华为推送 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仓库 (因为帖子中不能附带url,请去Demo中复制)
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字段就完成了!!!
有说的不对的地方,欢迎大家私信指正!
祝:工作顺利!







































苏公安网备 32011402010933号