跳到主要内容

集成荣耀推送

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

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

提示

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

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

在融云控制台配置荣耀推送

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

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

    (width=600)

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

    您需要记录下应用下的 App IDClient IDClient Secret

    (height=400)

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

    (height=400)

  3. (可选)配置自定义点击消息动作的 Intent,用于打开应用自定义页面。该字段对应荣耀官方下行消息接口中 ClickAction.type1 时的 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. 保存设置。所有设置 30 分钟后生效。

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

配置客户端接收荣耀推送

首先,需要将荣耀推送客户端 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 插件配置。
    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. dependencies 中添加如下编译依赖,集成荣耀官方推送 SDK。最新版本号可请参见荣耀推送 SDK 版本信息

    dependencies {
    // 添加如下配置,推荐您使用最新版本。
    implementation 'com.hihonor.mcs:push:7.0.61.303'
    }
  3. 添加荣耀 asplugin 插件配置。以 Gradle 7.0 以下版本为例,在应用级别的 build.gradle 文件头部声明下一行添加如下配置:

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

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

  4. 配置 AndroidManifest.xml 文件。

    1. 添加如下 meta-data 标签,配置荣耀推送服务的 App ID。

      <manifest>
      <application>
      <meta-data
      android:name="com.hihonor.push.app_id"
      android:value="您的AppId" />
      </application>
      </manifest>
    2. 融云 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>
  5. 如果您的应用 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 不支持控制角标展示。如需了解与厂商推送通知相关的角标控制实现,可参考知识库文档推送角标