集成华为推送
按照本指南集成 华为推送服务(Push Kit),让融云 SDK 支持从华为推送服务获取推送通知。
在集成第三方推送前,请确保已在融云控制台配置 Android 应用 ID。详见推送集成概述。
在融云控制台配置华为推送
如果想通过华为推送接收融云即时通讯服务的推送通知,您需要在融云控制台上提供您的华为推送应用的详细信息。
-
前往华为 AppGallery Connect 网站,点击我的项目,在项目列表中找到您的项目,上方导航栏选择需要查看信息的应用。
如下图所示,test-push 是项目名称,huawei-app-1 是已关联到该项目的应用。
提示如果没有华为开发者账号,或尚未创建项目和应用,请先创建账号、项目和应用。详见华为开发者文档创建账号、创建应用。请确保项目下已关联了应用,启用了推送服务,并配置签名证书指纹。如您对华为控制台上配置推送服务的流程有任何疑问,可参见华为官方开发者文档配置 AppGallery Connect。
您需要记录下应用下的 Client ID(同 App ID) 和 Client Secret。
-
打开融云控制台,在应用标识页面点击设置推送,找到 Android > 华为推送,填入上一步获取的 Client ID、Client Secret。
-
(可选)配置自定义点击消息动作的 Intent。详见华为官方开发者文档自定义点击消息动作。
- 注意 intent 的格式必须要以
end
结尾。 - 自定义 intent 后,需按照定义 intent 在
AndroidManifest.xml
的 Activity 中配置如下intent-filter
。
- 注意 intent 的格式必须要以
-
(可选)配置推送角标数。详见华为官方开发者文档桌面角标。
- badgeAddNum:应用角标累加数字非应用角标实际显示数字,为大于0小于100的整数。例如,某应用当前有N条未读消息,若 add_num 设置为3,则每发一次消息,应用角标显示的数字累加3,为 N+3。
- Activity:应用入口 Activity 类全路径。样例:com.example.hmstest.MainActivity
-
(可选)配置默认的华为推送通道的消息自分类标识,例如
IM
。App 根据华为要求完成自分类权益申请 或 申请特殊权限 后配置字段有效。详见华为推送官方文档消息分类标准。配置成功后,当前包名接收的华为推送通知默认均会携带该字段。注意,如果客户端或服务端发送消息时配置了华为推送 Category,则使用发消息时指定的配置。 -
配置推送通知标题。设置默认的推送通知标题。一般情况下客户端发送消息转 Push 时不使用此标题设置。在调用融云服务端 API
/push.json
、/push/user.json
、/push/custom.json
接口推送通知时, 如未传入通知标题,则使用该处设置的标题。从服务端发消息时,如果发送用户 ID 在融云服务端没有用户名,也会使用此 “推送通知标题”。 -
保存设置。所有设置 30 分钟后生效。
您已完成需要融云控制台华为推送配置的全部内容。现在可以设置客户端集成。
配置客户端接收华为推送
首先,需要将华为推送客户端 SDK 添加到您的 Android 项目。
根据华为开发者文档集成 HMS Core SDK,您需要将 “agconnect-services.json” 文件添加到您的 App 中。点击 agconnect-services.json 下载配置文件。
将下载好的 agconnect-servics.json
文件放到 app 模块下的根目录,如下图:
导入华为推送 SDK
华为推送客户端 SDK 需要从华为 Maven 仓库获取。Android Studio的代码库配置在 Gradle 插件 7.0 以下版本、7.0 版本和 7.1 及以上版本有所不同。详见华为官方开发者文档集成 HMS Core SDK中的「配置 HMS Core SDK 的 Maven 仓库地址」。
本步骤中以 Gradle 插件 7.0 以下版本为例。打开在 project 的 build.gradle
中添加如下内容。
allprojects {
repositories {
//Add Huawei Maven
maven {url 'http://developer.huawei.com/repo/'}
}
}
buildscript{
repositories {
//Add Huawei Maven
maven { url 'http://developer.huawei.com/repo/' }
}
dependencies {
// Add this line
classpath 'com.huawei.agconnect:agcp:1.6.1.300'
}
}
“buildscript > dependencies” 下需要添加 AGC 插件配置,请您参见华为官方开发者文档 AGC 插件依赖关系选择合适的 AGC 插件版本。
添加华为 Maven 仓库后,您可以在 App 的 build.gradle
中添加依赖,直接引入华为推送客户端 SDK。建议您集成的SDK使用最新版本号,版本号索引请参见华为官方开发者文档推送服务 SDK 版本更新说明。
在 app 模块的 build.gradle
添加如下内容:
android {
defaultConfig {
//...
manifestPlaceholders = [
HW_PUSH_ENABLE : "true"
]
}
}
dependencies {
// x.y.z 为当前 IM SDK 版本号
implementation 'cn.rongcloud.sdk.push:huawei:x.y.z'
}
...
// Add to the bottom of the file
apply plugin: 'com.huawei.agconnect'
华为 Push SDK 依赖说明:最新版本 Push SDK 需要终端设备上安装HMS Core(APK)4.0.0.300 及以上版本;如果用户手机没有安装,您的应用调用 HMS Core 时,会自动引导用户提示安装。
默认支持 HMS Core(APK)的手机包括:部分 EMUI 4.0 和 4.1 的手机,以及 EMUI 5.0 及之后的华为手机。
启用华为推送服务
请在初始化融云 SDK 之前启用华为推送服务。融云 SDK 将向华为推送服务注册、并将获取的华为推送 Token 上报给融云服务端。
在 SDK init 之前,调用下面代码,初始化 RongPushPlugin
模块。
RongPushPlugin.init(getContext());
如果找不到 RongPushPlugin
模块,请检查是否已经集成融云自建推送通道。
混淆配置
请参见华为推送官方文档配置混淆脚本。
处理推送通知的点击事件
- 自定义推送通知点击事件:介绍如何实现 SDK 的默认跳转行为,以及如何自定义处理点击事件。详见自定义推送通知点击事件。
- 自定义推送通知样式:SDK 接收到其他第三方厂商的推送后,弹出的通知是系统通知,由手机系统底层直接弹出通知,所以不支持自定义。
角标未读数
融云不维护应用角标数量,融云客户端 SDK 不支持控制角标展示。如需了解与厂商推送通知相关的角标控制实现,可参考知识库文档推送角标。