集成荣耀推送
按照本指南集成 荣耀推送服务,让融云 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'}
}
} -
在
dependencies
中添加如下编译依赖,集成荣耀官方推送 SDK。最新版本号可请参见荣耀推送 SDK 版本信息。dependencies {
// 添加如下配置,推荐您使用最新版本。
implementation 'com.hihonor.mcs:push:7.0.61.303'
} -
添加荣耀 asplugin 插件配置。以 Gradle 7.0 以下版本为例,在应用级别的
build.gradle
文件头部声明下一行添加如下配置:apply plugin: 'com.hihonor.mcs.asplugin'
提示引入 asplugin 插件需要在 Android studio 中配置 gradle 的 jdk 版本为 11 以上。详见荣耀官方文档配置开发环境。
-
配置
AndroidManifest.xml
文件。-
添加如下
meta-data
标签,配置荣耀推送服务的 App ID。<manifest>
<application>
<meta-data
android:name="com.hihonor.push.app_id"
android:value="您的AppId" />
</application>
</manifest> -
融云 SDK 已经创建了荣耀推送接收服务,您需要在
application
标签下注册该服务。exported
属性需要设置为false
,限制其他应用的组件唤醒该 service。<?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。<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
混淆配置
请参见荣耀推送官方文档配置混淆脚本。
处理推送通知的点击事件
- 自定义推送通知点击事件:介绍如何实现 SDK 的默认跳转行为,以及如何自定义处理点击事件。详见自定义推送通知点击事件。
- 自定义推送通知样式:SDK 接收到其他第三方厂商的推送后,弹出的通知是系统通知,由手机系统底层直接弹出通知,所以不支持自定义。
角标未读数
融云不维护应用角标数量,融云客户端 SDK 不支持控制角标展示。如需了解与厂商推送通知相关的角标控制实现,可参考知识库文档推送角标。