集成荣耀推送
按照本指南集成 荣耀推送服务,让融云 SDK 支持从荣耀推送服务获取推送通知。
在集成第三方推送前,请确保已在融云控制台配置 Android 应用 ID。详见推送集成概述。
IMLib SDK(开发版)从 5.6.7 版本开始支持荣耀推送。 重要
如果您的项目集成或升级到 IM SDK(开发版)5.6.7 版本,必须同时集成荣耀推送,否则荣耀 Magic OS 8.0 及之后系统版本的设备可能无法接收推送通知。
在融云控制台配置荣耀推送
如果想通过荣耀推送接收融云即时通讯服务的推送通知,您需要在融云控制台上提供您的荣耀推送应用的详细信息。
- 
前往荣耀开发者服务平台,在 推送服务 页面,选择您创建的应用。  提示 提示您需要记录下应用下的 App ID、Client ID 和 Client Secret。  
- 
打开融云控制台,在应用标识页面点击设置推送,找到 Android > 荣耀推送,填入上一步获取的 Client ID、Client Secret。  
- 
(可选)配置自定义点击消息动作的 Intent,用于打开应用自定义页面。该字段对应荣耀官方下行消息接口中 ClickAction.type为1时的ClickAction.action。如有疑问,详见荣耀开发者文档消息推送。自定义 intent 后,需在AndroidManifest.xml的 Activity 中配置intent-filter,接收自定义的 intent。
- 
(可选)配置推送角标。 - badgeAddNum:应用角标累加数字非应用角标实际显示数字,为大于 0 小于 100 的整数。例如,某应用当前有N条未读消息,若 add_num 设置为3,则每发一次消息,应用角标显示的数字累加3,为 N+3。该字段对应荣耀官方下行消息接口中 BadgeNotification.addNum。如有疑问,详见荣耀开发者文档消息推送。
- Activity:应用入口 Activity 类全路径。样例:com.example.honortest.MainActivity。该字段对应荣耀官方下行消息接口中 BadgeNotification.badgeClass。如有疑问,详见荣耀开发者文档消息推送。
 
- badgeAddNum:应用角标累加数字非应用角标实际显示数字,为大于 0 小于 100 的整数。例如,某应用当前有N条未读消息,若 add_num 设置为3,则每发一次消息,应用角标显示的数字累加3,为 N+3。该字段对应荣耀官方下行消息接口中 
- 
配置推送通知标题。设置默认的推送通知标题。一般情况下客户端发送消息转 Push 时不使用此标题设置。在调用融云服务端 API /push.json、/push/user.json、/push/custom.json接口推送通知时,如未传入通知标题,则使用该处设置的标题。从服务端发消息时,如果发送用户 ID 在融云服务端没有用户名,也会使用此 “推送通知标题”。
- 
保存设置。所有设置 15 分钟后生效。 
您已完成需要融云控制台荣耀推送配置的全部内容。现在可以设置客户端集成。
配置客户端接收荣耀推送
首先,需要将荣耀推送客户端 SDK 添加到您的 Android 项目。
下载荣耀服务配置文件
以下步骤来自荣耀开发者文档添加应用配置文件:
- 
登录荣耀开发者服务平台,单击应用管理,在应用列表中找到目标应用,单击应用详情。 
- 
在应用基础信息查看页面的 SDK 配置区域,下载 mcs-services.json配置文件。 
- 
将下载好的 mcs-servics.json文件拷贝到应用级根目录下。
导入荣耀推送 SDK
重要
荣耀推送 SDK Maven 仓库的配置在 Gradle 插件 7.0 以下版本、7.0 版本和 7.1 及以上版本有所不同。本步骤中以荣耀官方文档中 Gradle 插件 7.0 以下版本为例。其他 Gradle 版本配置方法,详见荣耀官方文档 集成 SDK。
- 
配置荣耀官方 Maven 仓库,以 Gradle 7.0 以下版本为例。 打开在 project 的 build.gradle:- 在 buildscript > repositories 中配置 SDK 的 Maven 仓地址。
- 在 allprojects > repositories 中配置 SDK 的 Maven 仓地址。
- 如果 App 中添加了 mcs-services.json 文件则需要在 buildscript > dependencies 中增加 asplugin 插件配置。
 Groovybuildscript {
 repositories {
 google()
 jcenter()
 // 配置SDK的Maven仓地址。
 maven {url 'https://developer.hihonor.com/repo'}
 }
 dependencies {
 ...
 // 增加asplugin插件配置,推荐您使用最新版本。
 classpath 'com.hihonor.mcs:asplugin:2.0.0'
 // 增加gradle插件配置,根据gradle版本选择对应的插件版本号
 classpath 'com.android.tools.build:gradle:4.1.2'
 }
 }
 allprojects {
 repositories {
 google()
 jcenter()
 // 配置SDK的Maven仓地址。
 maven {url 'https://developer.hihonor.com/repo'}
 }
 }
- 
在 dependencies中添加如下编译依赖,集成荣耀官方推送 SDK。最新版本号可请参见荣耀推送 SDK 版本信息。Groovydependencies {
 // 添加如下配置,推荐您使用最新版本。
 implementation 'com.hihonor.mcs:push:7.0.61.303'
 }
- 
添加荣耀 asplugin 插件配置。以 Gradle 7.0 以下版本为例,在应用级别的 build.gradle文件头部声明下一行添加如下配置:Groovyapply plugin: 'com.hihonor.mcs.asplugin'提示引入 asplugin 插件需要在 Android studio 中配置 gradle 的 jdk 版本为 11 以上。详见荣耀官方文档配置开发环境。 
- 
配置 AndroidManifest.xml文件。- 
添加如下 meta-data标签,配置荣耀推送服务的 App ID。xml<manifest>
 <application>
 <meta-data
 android:name="com.hihonor.push.app_id"
 android:value="您的AppId" />
 </application>
 </manifest>
- 
融云 SDK 已经创建了荣耀推送接收服务,您需要在 application标签下注册该服务。exported属性需要设置为false,限制其他应用的组件唤醒该 service。xml<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="io.rong.push.plugin.honor">
 <application>
 <service
 android:name="io.rong.push.platform.honor.HonorPushService"
 android:exported="false">
 <intent-filter>
 <action android:name="com.hihonor.push.action.MESSAGING_EVENT" />
 </intent-filter>
 </service>
 </application>
 </manifest>
 
- 
- 
如果您的应用 targerSdkVersion大于等于 30,需要在AndroidManifest.xml中添加标签,指定了应用可以处理的 intent 的 action。xml<queries>
 <intent>
 <action android:name="com.hihonor.push.action.BIND_PUSH_SERVICE" />
 </intent>
 </queries>
配置签名
参考荣耀官方文档,将生成签名证书指纹步骤中生成的签名文件拷贝到工程的 App 目录下,在 build.gradle 文件中配置签名。
android {
    signingConfigs {
        config {
            // 根据您实际的签名信息,替换以下参数中的xxxx
            keyAlias 'xxxx'
            keyPassword 'xxxx'
            storeFile file('xxxx.jks')
            storePassword 'xxxx'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.config
        }
        release {
            signingConfig signingConfigs.config
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}
启用荣耀推送服务
SDK 从 5.6.7 版本开始支持荣耀推送,并向融云服务端上报荣耀推送的 Token。
请在初始化融云 SDK 之前启用荣耀推送服务。融云 SDK 将向荣耀推送服务注册设备,并将从荣耀推送服务端获取的荣耀推送 Token 上报给融云推送服务端。
PushConfig 为所有推送配置相关的入口类。
PushConfig config = new PushConfig.Builder()
                .enableHonorPush(true)
                .XXX //此处忽略其它三方推送配置
                .build();
RongPushClient.setPushConfig(config); //将推送相关配置设置到 SDK
混淆配置
请参见荣耀推送官方文档配置混淆脚本。