集成荣耀推送
按照本指南集成 荣耀推送服务,让融云 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 在融云服务端没有用户名,也会使用此 “推送通知标题”。 -
保存设置。所有设置 30 分钟后生效。
您已完成需要融云控制台荣耀推送配置的全部内容。现在可以设置客户端集成。
配置客户端接收荣耀推送
首先,需要将荣耀推送客户端 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 插件配置。
buildscript {
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'}
}
} -
添加荣耀 asplugin 插件配置。以 Gradle 7.0 以下版本为例,在应用级别的
build.gradle
文件头部声明下一行添加如下配置:apply plugin: 'com.hihonor.mcs.asplugin'
提示引入 asplugin 插件需要在 Android studio 中配置 gradle 的 jdk 版本为 11 以上。详见荣耀官方文档配置开发环境。
-
如果您的应用
targerSdkVersion
大于等于30,需要在AndroidManifest.xml
中添加标签,指定了应用可以处理的 intent 的 action。<queries>
<intent>
<action android:name="com.hihonor.push.action.BIND_PUSH_SERVICE" />
</intent>
</queries> -
在应用级别的
build.gradle
添加如下编译依赖,集成融云推送 2.0 SDK。android {
defaultConfig {
//...
manifestPlaceholders = [
HONOR_APP_ID : "xxxxxxxxxx"
]
}
}
dependencies {
// x.y.z 为当前 IM SDK 版本号
implementation 'cn.rongcloud.sdk.push:honor:x.y.z'
}
HONOR_APP_ID
对应荣耀应用的 APP ID。
配置签名
参考荣耀官方文档,将生成签名证书指纹步骤中生成的签名文件拷贝到工程的 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 上报给融云推送服务端。
在 SDK init 之前,调用下面代码,初始化 RongPushPlugin
模块。
RongPushPlugin.init(getContext());
如果找不到 RongPushPlugin
模块,请检查是否已经集成融云自建推送通道。