受华为开发者联盟工作人员的邀约,特此将本篇博客重新整理一遍,希望让更多人受益,大家也可以参加华为开发者联盟推出活动,去提问自己的问题或者投稿。
扫二维码就可以参与活动哦。
首先本教程是基于华为推送 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字段配置,主要用来操作点击通知后的动作的,相信大家刚看到的时候也是懵逼的状态吧。华为推送平台有这样一段描述:
后来才反应过来,其实就是在要打开的activity里面加上配置,然后生成一个URI 配置在后台就可以了
------------------按自己的项目配置
然后在程序里把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字段就完成了!!!
有说的不对的地方,欢迎大家私信指正!
祝:工作顺利!