跳到主要内容

集成荣耀推送

按照本指南集成 荣耀推送服务,让融云 SDK 支持从荣耀推送服务获取推送通知。

在集成第三方推送前,请确保已在 IM 服务功能配置页面配置 Android 应用 ID。详见推送集成概述。

提示

IMLib SDK(开发版)从 5.6.7 版本开始支持荣耀推送。 重要

如果您的项目集成或升级到 IM SDK(开发版)5.6.7 版本,必须同时集成荣耀推送,否则荣耀 Magic OS 8.0 及之后系统版本的设备可能无法接收推送通知。

在内嵌的 IM 服务功能配置页面配置荣耀推送​

如果想通过荣耀推送接收融云即时通讯服务的推送通知,您需要在 IM 服务功能配置页面提供您的荣耀推送应用的详细信息。

  1. 前往荣耀开发者服务平台,在 推送服务 页面,选择您创建的应用。

    (width=600)

    提示
    • 如果没有荣耀开发者账号,或尚未创建项目和应用,请先创建账号、项目和应用,并开通推送服务。详见荣耀开发者文档创建账号、创建应用、申请开通推送服务。
    • 在继续完成以下步骤前,请确保已在荣耀开发者服务平台为应用开通了推送服务,并配置签名证书指纹。如您对荣耀控制台上配置推送服务的流程有任何疑问,可参见荣耀官方开发者文档上架申请指南。

    您需要记录下应用下的 App ID、Client ID 和 Client Secret。

    (height=400)

  2. 在需先按控制台内嵌指南嵌入到管理后台的 IM 服务功能配置页面(page_code: im_service_config)中,进入 离线推送 > 应用标识及推送证书管理 > 设置推送 > Android > 荣耀推送,填入上一步获取的 Client ID、Client Secret。

    (height=400)

  3. (可选)配置自定义点击消息动作的 Intent,用于打开应用自定义页面。该字段对应荣耀官方下行消息接口中 ClickAction.type 为 1 时的 ClickAction.action。如有疑问,详见荣耀开发者文档消息推送。自定义 intent 后,需在 AndroidManifest.xml 的 Activity 中配置 intent-filter,接收自定义的 intent。

  4. (可选)配置推送角标。

    • badgeAddNum:应用角标累加数字非应用角标实际显示数字,为大于 0 小于 100 的整数。例如,某应用当前有N条未读消息,若 add_num 设置为3,则每发一次消息,应用角标显示的数字累加3,为 N+3。该字段对应荣耀官方下行消息接口中 BadgeNotification.addNum。如有疑问,详见荣耀开发者文档消息推送。
    • Activity:应用入口 Activity 类全路径。样例:com.example.honortest.MainActivity。该字段对应荣耀官方下行消息接口中 BadgeNotification.badgeClass。如有疑问,详见荣耀开发者文档消息推送。
  5. 配置推送通知标题。设置默认的推送通知标题。一般情况下客户端发送消息转 Push 时不使用此标题设置。在调用融云服务端 API /push.json、/push/user.json、/push/custom.json 接口推送通知时,如未传入通知标题,则使用该处设置的标题。从服务端发消息时,如果发送用户 ID 在融云服务端没有用户名,也会使用此 “推送通知标题”。

  6. 保存设置。所有设置 15 分钟后生效。

您已完成荣耀推送服务端配置的全部内容。现在可以设置客户端集成。

配置客户端接收荣耀推送​

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

下载荣耀服务配置文件​

以下步骤来自荣耀开发者文档添加应用配置文件:

  1. 登录荣耀开发者服务平台,单击应用管理,在应用列表中找到目标应用,单击应用详情。

  2. 在应用基础信息查看页面的 SDK 配置区域,下载 mcs-services.json 配置文件。

  3. 将下载好的 mcs-servics.json 文件拷贝到应用级根目录下。

导入荣耀推送 SDK​

重要

荣耀推送 SDK Maven 仓库的配置在 Gradle 插件 7.0 以下版本、7.0 版本和 7.1 及以上版本有所不同。本步骤中以荣耀官方文档中 Gradle 插件 7.0 以下版本为例。其他 Gradle 版本配置方法,详见荣耀官方文档 集成 SDK。

  1. 配置荣耀官方 Maven 仓库,以 Gradle 7.0 以下版本为例。

    打开在 project 的 build.gradle:

    • 在 buildscript > repositories 中配置 SDK 的 Maven 仓地址。
    • 在 allprojects > repositories 中配置 SDK 的 Maven 仓地址。
    • 如果 App 中添加了 mcs-services.json 文件则需要在 buildscript > dependencies 中增加 asplugin 插件配置。
    Groovy
    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'}
    }
    }
  2. 添加荣耀 asplugin 插件配置。以 Gradle 7.0 以下版本为例,在应用级别的 build.gradle 文件头部声明下一行添加如下配置:

    Groovy
    apply plugin: 'com.hihonor.mcs.asplugin'
    提示

    引入 asplugin 插件需要在 Android studio 中配置 gradle 的 jdk 版本为 11 以上。详见荣耀官方文档配置开发环境。

  3. 如果您的应用 targerSdkVersion 大于等于30,需要在 AndroidManifest.xml 中添加标签,指定了应用可以处理的 intent 的 action。

    xml
    <queries>
    <intent>
    <action android:name="com.hihonor.push.action.BIND_PUSH_SERVICE" />
    </intent>
    </queries>
  4. 在应用级别的 build.gradle 添加如下编译依赖,集成融云推送 2.0 SDK。

    Groovy
    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 文件中配置签名。

Groovy
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 模块。

Java
RongPushPlugin.init(getContext());

如果找不到 RongPushPlugin 模块,请检查是否已经集成融云自建推送通道。

混淆配置​

请参见荣耀推送官方文档配置混淆脚本。

处理推送通知的点击事件​

  • 自定义推送通知点击事件:介绍如何实现 SDK 的默认跳转行为,以及如何自定义处理点击事件。详见自定义推送通知点击事件。
  • 自定义推送通知样式:SDK 接收到其他第三方厂商的推送后,弹出的通知是系统通知,由手机系统底层直接弹出通知,所以不支持自定义。

角标未读数​

融云不维护应用角标数量,融云客户端 SDK 不支持控制角标展示。。