集成华为推送
概述
统一推送联盟
成立之后,各大厂商都推出了自己的推送服务通道,主要目的是为了建立 Android 推送生态。目前小米,华为,魅族,OPPO,vivo 等厂商都推出了系统级别的推送通道,避免了各家 APP 都使用各自的长链接来维持推送通道、需要应用进程处于存活状态,而造成手机耗电、耗内存等问题。
前提条件
在接入 华为
的离线推送通道之前,请确保:
-
已集成最新版本的音视频通话 UIKit(Call Kit),并且完成在线邀请功能,详情请参考 快速开始(包含呼叫邀请)。
-
已完成如下步骤:
使用步骤
-
下载华为服务配置文件。
登录 华为开发者后台 ,在 “管理中心 > PUSH > 选择您的应用 > 项目设置 > 常规”,找到 “agconnect-servics.json” 文件,点击下载,如下图:
-
配置工程。
将下载好的 “agconnect-servics.json” 文件,放到自己项目的 “app” 目录下,如下图:
-
配置 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 插件配置。
Untitledbuildscript { 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/'} } }
1 -
集成 HMS Core SDK。
打开应用级的 “build.gradle” 文件,在 “dependencies” 中添加如下编译依赖。代码块中的
version
请参考华为官网文档 HMS Core - 推送服务 - 版本更新说明 传入最新版本号。Untitleddependencies { // 以下 version 请参考华为官网文档 [HMS Core - 推送服务 - 版本更新说明](https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/android-app-version-0000001074227861) 传入最新版本号 implementation 'com.huawei.hms:push:{version}' }
1 -
添加 agcp 插件配置。请根据实际情况选择(二选一):
- 方式一:在文件头部声明下一行添加如下配置。
Untitledapply plugin: 'com.huawei.agconnect'
1- 方式二:在 plugins 中添加如下配置。
Untitledplugins { id 'com.android.application' // 添加如下配置 id 'com.huawei.agconnect' }
1 -
以上配置完成后,请前往 ZEGO 控制台,点击“项目管理”,选择需要配置的项目,查看“项目配置”。在“服务配置 - 即时通讯 - 离线推送证书配置” 中 “点击添加证书”,如下图所示(针对每个 Android 厂商,您至多可以添加两个证书):
Note图中字段“Project ID” 为您在各厂商申请的参数,根据每个厂商不一样。
添加完成后,您可以在“离线推送证书配置”模块看到该证书,还可以再次编辑或删除该证书。
-
防止混淆代码
在 “proguard-rules.pro” 文件中,为 HMS Core SDK 添加 -keep 类的配置,这样可以防止混淆 HMS Core SDK 公共类名称:
Untitled-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.**{*;}
1添加完上述代码后,如果您需要了解更多混淆相关的内容,请查看华为官方文档 配置混淆脚本。
华为推送消息限制
华为推送服务将通知消息分为资讯营销、服务与通讯两种。资讯营销类消息的每日推送数量有上限,服务与通讯类消息每日推送数量无上限,详情请参考华为官网文档 推送数量管理细则。
消息分类 | 类型说明 | 推送数量限制 |
---|---|---|
资讯营销类消息 |
|
|
服务与通讯类消息 |
| 无限制。 |
基于消息分类实现无限制推送
-
华为可通过自分类权益来实现不限量推送,开发者需要在华为控制台申请自分类权益,请参考华为官方文档 消息分类标准 - 自分类权益申请。
-
完成上述申请后,请登录 ZEGO 控制台,添加 resourceID,步骤如下:
-
选择项目管理,查看对应的项目。
-
选择 服务配置- 即时通讯 页面,下滑到“自定义推送策略(resourcesID)配置,点击“添加 resourceID”。
-
填入
resourceID
(由您自定义,不超过 32 个字符)、您在华为控制台定义的category
(推送类别)、target_user_type
(用户类型,0 表示正式推送,1 表示测试推送)。Note建议 resourceID 能够直接反映推送目的。例如,目的是打电话,就可以命名为
call_resource
。
-
-
在发起呼叫时,可以指定使用该 Resource ID 对应的通道进行推送。您需要将配置的 Resource ID 填写到对应的呼叫邀请按钮中或者设置给呼叫邀请接口,即可在呼叫邀请的时候使用离线推送功能。