本章节介绍如何集成移动推送提供的荣耀厂商通道SDK。
准备工作
已经按照Android SDK接入完成了移动推送SDK的接入。
已经在HONOR Develops注册了应用,如未注册请登录HONOR Develops, 注册您的应用。在应用服务→推送服务→应用查看中获取App ID、Client ID、Client Secret等信息。
已经在荣耀开发者平台上配置签名证书指纹。如未配置请参见荣耀官方文档证书指纹生成指南。
已经设置消息回执,如未设置可参考设置方法:消息回执。
重要使用辅助弹窗后,荣耀通道的到达率统计覆盖用户点击荣耀弹窗推送通知的场景,未点击部分暂未覆盖,您可在荣耀端设置消息回执,便于移动推送更好地统计推送数据。
开通回执需配置回调地址:https://amspush-ack.aliyuncs.com/ho/。
已经在EMAS控制台配置了荣耀推送密钥(App ID),如未配置,请登录EMAS移动推送控制台,设置您的荣耀推送密钥(App ID),设置方法参见配置厂商通道密钥。
第一步:将SDK添加到您的应用
在您的模块(应用级)Gradle 文件(通常是<project>/<app-module>/build.gradl)中,在dependencies
中添加SDK依赖。
请阅读Android SDK版本说明,依赖对应版本SDK。
dependencies {
implementation 'com.aliyun.ams:alicloud-android-third-push:x.x.x'
implementation 'com.aliyun.ams:alicloud-android-third-push-honor:x.x.x'
}
移动推送厂商通道SDK只支持maven方式依赖。
第二步:配置使用SDK
1 配置AppID
在应用级的AndroidManifest.xml
文件下的application
节点下添加meta-data来配置AppID。
<meta-data
android:name="com.hihonor.push.app_id"
android:value="您的荣耀AppID" />
2 SDK初始化
SDK初始化务必在Application中执行且放在推送SDK初始化代码之后,否则可能导致厂商通道注册失败。
通过如下方式进行初始化:
// 注册方法会自动判断是否支持荣耀系统推送,如不支持会跳过注册。
HonorRegister.register(application)
// 注册方法会自动判断是否支持荣耀系统推送,如不支持会跳过注册。
HonorRegister.register(application);
注册方法会自动判断是否支持荣耀系统推送,如不支持会跳过注册。
3 混淆配置
如果集成推送SDK的工程开启了代码混淆,需要添加以下厂商通道的ProGuard配置。
# 荣耀通道
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hihonor.push.**{*;}
Android推送SDK 3.8.7版本开始,荣耀通道升级至7.0.61.302版本,该版本荣耀通道的混淆配置有所变更,请及时更新混淆文件配置。
第三步:接入验证
1 打开SDK日志
val pushService = PushServiceFactory.getCloudPushService()
//仅适用于Debug包,正式包不需要此行
pushService.setLogLevel(CloudPushService.LOG_DEBUG)
CloudPushService pushService = PushServiceFactory.getCloudPushService();
//仅适用于Debug包,正式包不需要此行
pushService.setLogLevel(CloudPushService.LOG_DEBUG);
2 确认成功方法
荣耀通道是否注册成功,可以通过过滤MPS:HonorRegister关键字查看,如果没有出现getToken failure相关日志,则证明荣耀通道注册成功。
后续步骤
您已经可以通过EMAS后台将推送通知通过厂商通道推送到手机通知栏,但是要处理点击通知后的逻辑,只能通过辅助弹窗来接收推送数据,详情请参见辅助弹窗接入。
使用移动推送进行厂商通道推送时(使用移动推送控制台或者OpenAPI进行推送时),服务端必须参考辅助弹窗文档进行服务端配置,若服务端参数不设置,将不会给厂商通道进行推送。