即时通讯
  • iOS
  • Android : Java
  • macOS
  • Windows
  • Web
  • 小程序
  • Flutter
  • Unity3D
  • uni-app
  • React Native
  • 产品简介
  • 下载
  • 快速开始
    • 跑通示例源码
    • 实现基本消息收发
  • 用户相关
  • 房间相关
  • 群组相关
  • 消息相关
  • 呼叫邀请
  • 会话管理
  • 缓存管理
  • 离线推送
  • 语音组件
  • 客户端 API
  • 服务端 API
  • 迁移方案
  • SDK 错误码
  • 常见问题
  • 文档中心
  • 即时通讯
  • 离线推送
  • Android 推送集成指南
  • 华为推送集成指南

华为推送集成指南

更新时间:2024-03-26 14:40

概述

统一推送联盟 成立之后,各大厂商都推出了自己的推送服务通道,主要目的是为了建立 Android 推送生态。目前小米,华为,魅族,OPPO,vivo 等厂商都推出了系统级别的推送通道,避免了各家 APP 都使用各自的长链接来维持推送通道、需要应用进程处于存活状态,而造成手机耗电、耗内存等问题。

开发者使用 ZIM 提供的“离线推送”功能之前,请参考本文,接入华为厂商的离线推送通道。

前提条件

在接入 华为 的离线推送通道之前,请确保:

  • 已集成最新版本的 ZIM SDK,详情请参考 快速开始 - 实现基本收发消息 的 “3 集成 SDK”。

  • 已完成如下步骤:

    1. 前往 华为开发者后台 注册开发者账号,并进行认证,详情请参考 注册帐号实名认证
    2. 开发者身份认证成功后,使用华为开发者账号,登录 华为开发者后台,选择 “我的项目 > 添加项目 > 创建项目”,创建一个新项目。
    3. 在创建的新项目中,选择 “项目设置> 推送服务”,点击“立即开通”,开通推送服务。
    4. 开通推送服务后,还需要创建自己的应用,选择 “我的项目 > 我的应用 > 新建”,勾选“添加到项目”后,选择刚创建的项目,创建一个应用,并获取应用的 AppID 等信息。

使用步骤

  1. 下载华为服务配置文件。

    登录 华为开发者后台 ,在 “管理中心 > PUSH > 选择您的应用 > 项目设置 > 常规”,找到 “agconnect-servics.json” 文件,点击下载,如下图:

    /Pics/ZIM/offline_push_huawei.png

  2. 配置工程。

    将下载好的 “agconnect-servics.json” 文件,放到自己项目的 “app” 目录下,如下图:

    /Pics/ZIM/offline_push_huawei_json.png

  3. 配置 HMS Core SDK 的 Maven 仓地址。

    打开项目根目录下的 ”build.gradle“ 文件。

    • 在 “buildscript > repositories” 中,配置 HMS Core SDK 的 Maven 仓地址。

    • 在 “allprojects > repositories” 中,配置 HMS Core SDK 的 Maven 仓地址。

    • 如果 App 中添加了 “agconnect-services.json” 文件,则需要在 “buildscript > dependencies” 中增加 agcp 插件配置。

      buildscript {
        repositories {
            google()
            jcenter()
            // 配置 HMS Core SDK 的 Maven 仓地址。
            maven {url 'https://developer.huawei.com/repo/'}
        }
        dependencies {
            ...
            // 增加 agcp 插件配置。
            classpath 'com.huawei.agconnect:agcp:1.4.2.300'
        }
      }
      
      allprojects {
        repositories {
            google()
            jcenter()
            // 配置 HMS Core SDK 的 Maven 仓地址。
            maven {url 'https://developer.huawei.com/repo/'}
        }
      } 
  4. 集成 HMS Core SDK。

    打开应用级的 “build.gradle” 文件,在 “dependencies” 中添加如下编译依赖。代码块中的 version 请参考华为官网文档 HMS Core - 推送服务 - 版本更新说明 传入最新版本号。

    dependencies {
        // 以下 version 请参考华为官网文档 [HMS Core - 推送服务 - 版本更新说明](https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/android-app-version-0000001074227861) 传入最新版本号
        implementation 'com.huawei.hms:push:{version}' 
    }
  5. 添加 agcp 插件配置。请根据实际情况选择(二选一):

    • 方式一:在文件头部声明下一行添加如下配置。

      apply plugin: 'com.huawei.agconnect'
    • 方式二:在 plugins 中添加如下配置。

      plugins {
        id 'com.android.application'
        // 添加如下配置
        id 'com.huawei.agconnect'
      }
  1. 以上配置完成后,请在 ZEGO 控制台 自助配置 ZIM 离线推送证书(详情请参考 项目管理 - 即时通讯 - 离线推送配置),若无法配置,请联系 ZEGO 技术支持处理。
  1. 防止混淆代码

    在 “proguard-rules.pro” 文件中,为 HMS Core SDK 添加 -keep 类的配置,这样可以防止混淆 HMS Core SDK 公共类名称:

    -ignorewarnings
    -keepattributes *Annotation*
    -keepattributes Exceptions
    -keepattributes InnerClasses
    -keepattributes Signature
    -keepattributes SourceFile,LineNumberTable
    -keep class com.huawei.hianalytics.**{*;}
    -keep class com.huawei.updatesdk.**{*;}
    -keep class com.huawei.hms.**{*;}

    添加完上述代码后,如果您需要了解更多混淆相关的内容,请查看华为官方文档 配置混淆脚本

华为推送消息限制

华为推送服务将通知消息分为资讯营销服务与通讯两种。资讯营销类消息的每日推送数量有上限,服务与通讯类消息每日推送数量无上限,详情请参考华为官网文档 推送数量管理细则

消息分类 类型说明 推送数量限制
资讯营销类消息
  • 内容资讯:内容推荐,新闻,财经动态,生活资讯,社交动态,调研,其他。
  • 营销活动:产品促销,功能推荐,运营活动。
  • 新闻阅读类:5条/日。
  • 其他应用类型:2条/日。
服务与通讯类消息
  • 社交通讯:即时聊天,音频、视频通话。
  • 服务提醒:订阅,出行,健康,工作事项提醒等。
无限制。

基于消息分类实现无限制推送

  1. 华为可通过自分类权益来实现不限量推送,开发者需要在华为控制台申请自分类权益,请参考华为官方文档 消息分类标准 - 自分类权益申请

  2. 完成上述申请后,请联系 ZEGO 技术支持,提供 resourceID(由您自定义,不超过 32 个字符)、category(推送类别)、target_user_type(用户类型,0 表示正式推送,1 表示测试推送),以便配置 resouceID。

    建议 resourceID 能够直接反映推送目的。例如,目的是打电话,就可以命名为 call_resource

  3. 在发起推送时,可以指定使用该 Resource ID 对应的通道进行推送。您需要将配置的 Resource ID 填写到 ZIMPushConfig 中,实现代码请参考 实现离线推送 - 发送单聊消息时使用离线推送功能

本篇目录