跳到主要内容

集成华为推送

按照本指南集成 华为推送服务(Push Kit),让融云 SDK 支持从华为推送服务获取推送通知。

在集成第三方推送前,请确保已在融云控制台配置 Android 应用 ID。详见推送集成概述

在融云控制台配置华为推送

如果想通过华为推送接收融云即时通讯服务的推送通知,您需要在融云控制台上提供您的华为推送应用的详细信息。

  1. 前往华为 AppGallery Connect 网站,点击我的项目,在项目列表中找到您的项目,上方导航栏选择需要查看信息的应用。

    如下图所示,test-push 是项目名称,huawei-app-1 是已关联到该项目的应用。

    (width=600)

    提示

    如果没有华为开发者账号,或尚未创建项目和应用,请先创建账号、项目和应用。详见华为开发者文档创建账号创建应用。请确保项目下已关联了应用,启用了推送服务,并配置签名证书指纹。如您对华为控制台上配置推送服务的流程有任何疑问,可参见华为官方开发者文档配置 AppGallery Connect

    您需要记录下应用下的 Client ID(同 App ID) 和 Client Secret

    (height=400)

  2. 打开融云控制台,在应用标识页面点击设置推送,找到 Android > 华为推送,填入上一步获取的 Client IDClient Secret

    (height=400)

  3. (可选)配置自定义点击消息动作的 Intent。详见华为官方开发者文档自定义点击消息动作

    • 注意 intent 的格式必须要以 end 结尾。
    • 自定义 intent 后,需按照定义 intent 在 AndroidManifest.xml 的 Activity 中配置如下 intent-filter
  4. (可选)配置推送角标数。详见华为官方开发者文档桌面角标

    • badgeAddNum:应用角标累加数字非应用角标实际显示数字,为大于0小于100的整数。例如,某应用当前有N条未读消息,若 add_num 设置为3,则每发一次消息,应用角标显示的数字累加3,为 N+3。
    • Activity:应用入口 Activity 类全路径。样例:com.example.hmstest.MainActivity
  5. (可选)配置默认的华为推送通道的消息自分类标识,例如 IM。App 根据华为要求完成自分类权益申请申请特殊权限 后配置字段有效。详见华为推送官方文档消息分类标准。配置成功后,当前包名接收的华为推送通知默认均会携带该字段。注意,如果客户端或服务端发送消息时配置了华为推送 Category,则使用发消息时指定的配置。

  6. 配置推送通知标题。设置默认的推送通知标题。一般情况下客户端发送消息转 Push 时不使用此标题设置。在调用融云服务端 API /push.json/push/user.json/push/custom.json 接口推送通知时,如未传入通知标题,则使用该处设置的标题。从服务端发消息时,如果发送用户 ID 在融云服务端没有用户名,也会使用此 “推送通知标题”。

  7. 保存设置。所有设置 30 分钟后生效。

您已完成需要融云控制台华为推送配置的全部内容。现在可以设置客户端集成。

配置客户端接收华为推送

首先,需要将华为推送客户端 SDK 添加到您的 Android 项目。

根据华为开发者文档集成 HMS Core SDK,您需要将 “agconnect-services.json” 文件添加到您的 App 中。点击 agconnect-services.json 下载配置文件。

(height=400)

将下载好的 agconnect-servics.json 文件放到 app 模块下的根目录,如下图:

(height=250)

导入华为推送 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 不支持控制角标展示。如需了解与厂商推送通知相关的角标控制实现,可参考知识库文档推送角标