有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

华为推送通道是由华为官方提供的系统级推送通道。在华为手机上,推送消息能够通过华为的系统通道抵达终端,并且无需打开应用,即可收到推送。
注意
本文仅适用华为通道 V2 接入,V4 接入请参见 华为通道 V4 接入
华为推送只有在签名发布包环境下,才可收到推送消息。
华为手机中的移动推送服务,必须升级到2.5.3以上版本,否则华为通道会注册失败(依旧走移动推送的通道)。
华为通道不支持抵达回调,支持点击回调(需要自定义参数),支持透传(忽略自定义参数,但不保证到达)。

操作步骤

获取密钥

1. 进入 华为开放平台
2. 注册和登录开发者账号,详情请参见 账号注册认证。(如果您是新注册账号,需进行实名认证)
3. 在华为推送平台中新建应用,详情请参见 创建应用。(应用包名需跟您在移动推送填写的包名保持一致)
4. 获取应用的 AppID 和 AppSecret,并且复制信息,填入控制台的应用配置 > 华为通道栏目中。

配置 SHA256 证书指纹

获取 SHA256 证书指纹方法,请参见 华为推送接入文档

集成步骤

AndroidStudio 集成方法

在 App 模块下的 build.gradle 文件内,完成移动推送所需要的配置后,再增加以下的华为节点:
1. 配置华为 AppID,示例代码如下:
manifestPlaceholders = [
HW_APPID: "华为的APPID"
]
2. 导入华为推送相关依赖,示例代码如下:
implementation 'com.tencent.tpns:huawei:[VERSION]-release'//华为推送 [VERSION] 为当前 SDK 版本号,版本号可在 SDK 下载页查看
说明
华为推送 [VERSION] 为当前 SDK 版本号,版本号可在 SDK 下载页 查看。

Eclipes 集成方法

1. 下载 SDK 安装包
2. 打开 Other-Push-jar 文件夹, 导入华为推送相关 jar 包,将 hw4tpns1.1.2.1.jar 导入项目工程中。
3. Androidmanifest.xml 文件中,新增如下配置:
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="您的APPID(来自华为官网)" >
</meta-data>
<activity
android:name="com.huawei.hms.activity.BridgeActivity"
android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"
android:excludeFromRecents="true"
android:exported="false"
android:hardwareAccelerated="true"
android:theme="@android:style/Theme.Translucent" >
<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui.Translucent" />
</activity>
<provider
android:name="com.huawei.hms.update.provider.UpdateProvider"
android:authorities="应用包名.hms.update.provider"
android:exported="false"
android:grantUriPermissions="true" >
</provider>
<receiver android:name="com.huawei.hms.support.api.push.PushEventReceiver" >
<intent-filter>
<!-- 接收通道发来的通知栏消息,兼容老版本PUSH -->
<action android:name="com.huawei.intent.action.PUSH" />
</intent-filter>
</receiver>
<!-- 注:华为push 需要的 end -->
4. 在 AndroidManifest.xml 增加 Receiver, 配置如下:
<receiver android:name="com.tencent.android.hwpush.HWPushMessageReceiver" >
<intent-filter>
<!-- 必须,用于接收TOKEN -->
<action android:name="com.huawei.android.push.intent.REGISTRATION" />
<!-- 必须,用于接收消息 -->
<action android:name="com.huawei.android.push.intent.RECEIVE" />
<!-- 可选,用于点击通知栏或通知栏上的按钮后触发onEvent回调 -->
<action android:name="com.huawei.android.push.intent.CLICK" />
<!-- 可选,查看PUSH通道是否连接,不查看则不需要 -->
<action android:name="com.huawei.intent.action.PUSH_STATE" />
</intent-filter>
</receiver>

启动华为推送

在调用移动推送 XGPushManager.registerPush 前,开启第三方推送接口:
//打开第三方推送
XGPushConfig.enableOtherPush(getApplicationContext(), true);
注册成功的日志如下:
I/XINGE: [XGOtherPush] other push token is : 0865551032618726300001294600CN01 other push type: huawei
I/XINGE: [a] binder other push token with accid = 2100274337 token = 17c32948df0346d5837d4748192e9d2f14c81e08 otherPushType = huawei otherPushToken = 0865551032618726300001294600CN01

代码混淆

-ignorewarning
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
-keep class com.huawei.android.hms.agent.**{*;}

说明
混淆规则需要放在 App 项目级别的 proguard-rules.pro 文件中。

华为通道抵达回执配置

华为通道抵达回执需要开发者自行配置,您可参照 华为厂商通道回执配置指引 配置完成后,可在推送记录中查看华为推送通道的抵达数据。



华为设备角标适配

华为设备支持设置应用角标,需要开发者做以下操作:
1. 申请应用内角标设置权限,具体实现在应用 AndroidManifest.xml 文件的 manifest 标签下添加以下权限配置:
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE "/>
2. 设置应用启动类 在管理台华为通道开启及参数配置处填写桌面图标对应的应用入口Activity类,如com.test.badge.MainActivity,如图所示:

角标的用法可参考 角标适配指南 文档。