600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 华为推送-华为PUSH SDK Android版接入方法

华为推送-华为PUSH SDK Android版接入方法

时间:2019-11-30 22:47:20

相关推荐

华为推送-华为PUSH SDK Android版接入方法

本文参考了华为推送平台官网及其Demo:/cn/consumer/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E

整理了整个接入过程以及常用用法

检查通道是否连接:adb shell netstat –ano | find "118"

集成过程

1.拷贝jar及res资源文件androidManifest.xml文件中的所有activity, receiver, service, meta-data拷贝至自己的AndroidManifest.xml文件中

2.混淆打包

开发者编译APK时请不要混淆本SDK,避免功能异常。 在配置文件中加入:-keep class com.huawei.android.pushagent.**{*;}-keep class com.huawei.android. pushselfshow.**{*;}-keep class com.huawei.android. microkernel.**{*;}-keep class com.baidu.mapapi.**{*;}

3.App使用SDK进行开发

1.Token申请

// 获取客户端AccessToken,获取之前请先确定该应用(包名)已经在开发者联盟上创建成功,并申请、审核通过Push权益// 该测试应用已经注册过PushManager.requestToken(PustDemoActivity.this);

2.设置标签信息,标签以key-valueMap提供

String tag1KeyStr = mEdTag1Key.getText().toString();String tag1ValueStr = mEdTag1Value.getText().toString();HashMap<String, String> map = new HashMap<String, String>();if (!TextUtils.isEmpty(tag1KeyStr)&& !TextUtils.isEmpty(tag1ValueStr)) {map.put(tag1KeyStr, tag1ValueStr);}try {PushManager.setTags(TagReportActivity.this, map);} catch (PushException e) {Log.e(TAG, e.toString());}

3.获取当前设备当前应用已经设置的标签信息

Map<String, String> tags;try {tags = PushManager.getTags(TagReportActivity.this);String tip = "";if (null != tags && !tags.isEmpty()) {for (Map.Entry<String, String> mapEntry : tags.entrySet()) {String key = mapEntry.getKey();String value = mapEntry.getValue();tip += ("tagKey:"+ key + ", tagValue:" + value+"; ");}Log.w(TAG, tip);Toast.makeText(TagReportActivity.this, tip, Toast.LENGTH_SHORT).show();}} catch (PushException e) {Log.e(TAG, e.toString());}

删除当前设备当前应用的标签信息

String delKeyStr = mEdDeleteKey.getText().toString();List<String> list = new ArrayList<String>();list.add(delKeyStr);try {PushManager.deleteTags(TagReportActivity.this, list);} catch (PushException e) {Log.e(TAG, e.toString());}

回调接口说明

回调接口由业务继承com.huawei.android.pushagent.api.PushEventReceiver现必要的回调方法。 各回调方法都是在新开启的线程中处理。

1.实现Token返回给应用:本接口必须被实现

2.实现消息透传给应用:本接口必须被实现

3.实现业务事件的回调 由业务决定是否调用该函数。

public void onEvent(Context context, Event event, Bundle extras) {if (Event.NOTIFICATION_OPENED.equals(event) || Event.NOTIFICATION_CLICK_BTN.equals(event)) {int notifyId = extras.getInt(BOUND_KEY.pushNotifyId, 0);if (0 != notifyId) {NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);manager.cancel(notifyId);}String content = "收到通知附加消息: " + extras.getString(BOUND_KEY.pushMsgKey);Log.w(PustDemoActivity.TAG, content);showPushMessage(PustDemoActivity.RECEIVE_NOTIFY_CLICK_MSG, content);} else if (Event.PLUGINRSP.equals(event)) {final int TYPE_LBS = 1;final int TYPE_TAG = 2;int reportType = extras.getInt(BOUND_KEY.PLUGINREPORTTYPE, -1);boolean isSuccess = extras.getBoolean(BOUND_KEY.PLUGINREPORTRESULT, false);String message = "";if (TYPE_LBS == reportType) {message = "LBS report result :";} else if(TYPE_TAG == reportType) {message = "TAG report result :";}Log.w(PustDemoActivity.TAG, message + isSuccess);showPushMessage(PustDemoActivity.RECEIVE_TAG_LBS_MSG, message + isSuccess);}super.onEvent(context, event, extras);}

注意事项1)建议不要在继承的PushEventReceiver中做过多的逻辑处理,如启线程、启动hander等。2) push业务逻辑需要将push相关的Receiver和Service 在一个进程中,请勿修改下面部分:<receiver android:name=" com.huawei.android.pushagent.PushEventReceiver "android:process=":pushservice"><receiver android:name="com.huawei.android.pushagent.PushBootReceiver"android:process=":pushservice" ><service android:name=" com.huawei.android.pushagent.PushService "android:process=":pushservice">3)因为APP涉及到多进程,每个进程启动时,会默认初始化Application,所以为了防止标签重复上报,建议不要在自定义的Application类里面调用标签上报等操作。4)在某些手机上申请token不成功,可能是被手机系统或其他安全性软件限制,建议在手机中设置允许应用开机自启动再尝试

透传消息偶尔不能够拉起应用在小米手机上,给这个应用设置:保持后台运行和允许开机启动。在部分品牌手机上也可以使用该方法解决。

官方文档中说明:透传消息需要设置开机自启动才能拉起应用华为手机上:Emui3.0上,Push广播有很大概率被限制,如: Mate7 3.0版本,荣耀6plus,P7 3.0版本,4X, 4A等。Emui3.1上,Push广播基本不被限制,但个别型号机型存在问题,如:荣耀5x等。Emui4.0及以上,Push广播有较高概率被限制,不被限制的机型如:荣耀畅玩4C,荣耀畅玩4X,Mate S,P8 MAX等。如广播被限制,需要将应用设为开机启动项。所以对于及时性或到达率要求非常高的应用,我们建议应用要考虑替代方案。后续Push版本,华为将采用新的设计方案,解决被限制的问题,但发布计划待定。非华为手机:第三方手机(如:小米、OPPO、三星等),由于rom的限制,需要将应用设为开机启动项文/topwqp(简书作者)原文链接:/p/47a6826f9815著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。