集成小米推送
概述
统一推送联盟
成立之后,各大厂商都推出了自己的推送服务通道,主要目的是为了建立 Android 推送生态。目前小米,华为,魅族,OPPO,vivo 等厂商都推出了系统级别的推送通道,避免了各家 APP 都使用各自的长链接来维持推送通道、需要应用进程处于存活状态,而造成手机耗电、耗内存等问题。
前提条件
在接入 小米
的离线推送通道之前,请确保:
- 已集成最新版本的音视频通话 UIKit(Call Kit),并且完成在线邀请功能,详情请参考 快速开始(包含呼叫邀请)。
- 已完成如下步骤:
- 前往 小米开放平台 注册开发者账号,并进行认证,详情请参考 企业开发者账号注册流程。
- 开发者身份认证成功后,使用小米开发者账号,登录 小米开发者后台,在“应用服务”中选择“消息推送”。
- 点击“创建应用”,按照流程输入相关信息,创建自己的应用,并获取该应用的 AppID、AppKey、AppSecret 等信息。
- 完成以上步骤以后,您还需要提交应用审核。审核通过即应用创建完成,接下来还需要申请开通小米推送服务,请参考本文 小米推送消息限制
使用步骤
-
下载 小米推送 SDK。
-
将下载到的 SDK “MiPush_SDK_Client_5_7_8-C_3rd.aar” 文件,拷贝到您项目路径的 “app/libs” 目录下。
-
在 “build.prop” 中添加 aar 依赖。
Untitleddependencies { implementation files('libs/MiPush_SDK_Client_5_7_8-C_3rd.aar') // 版本为 5.7.8 的小米推送 SDK }
1Warning由于 Android 12 通知 trampoline 限制(详情请参考 Google 官方文档 行为变更:以 Android 12 为目标平台的应用 - 通知 trampoline 限制),targetSdkVersion >= 31 的应用需要接入小米推送 SDK 4.9.1 或以上版本,否则会出现点击通知无法正常跳转的情况。
-
以上配置完成后,请前往 ZEGO 控制台,点击“项目管理”,选择需要配置的项目,查看“项目配置”。在“服务配置 - 即时通讯 - 离线推送证书配置” 中 “点击添加证书”,如下图所示(针对每个 Android 厂商,您至多可以添加两个证书):
Note图中字段“Project ID” 为您在各厂商申请的参数,根据每个厂商不一样。
添加完成后,您可以在“离线推送证书配置”模块看到该证书,还可以再次编辑或删除该证书。
-
防止混淆代码
在 “proguard-rules.pro” 文件中,为 小米推送 SDK 添加 -keep 类的配置,这样可以防止混淆小米推送 SDK 公共类名称:
Untitled# 以下的 “com.xiaomi.mipushdemo.DemoMessageRreceiver” 应改成 App 中定义的完整类名 -keep class com.xiaomi.mipush.sdk.DemoMessageReceiver {*;}
1
小米推送消息限制
小米推送将消息分为“私信消息”和“公信消息”两个类别,若应用选择不接入私信或公信,则会接入默认通道,详情请参考小米官网文档 小米推送消息限制说明。
消息类型 | 用户接收数量限制 | 申请方式 |
---|---|---|
默认 | 单个应用单个设备单日 1 条。 | 无需申请。 |
公信消息 | 单个应用单个设备单日 5-8 条。 | 需在推送运营平台申请。 |
私信消息 | 不限量。 |
使用私信通道无限制推送
-
请参考小米官方文档 小米推送消息分类新规 - channel申请及接入方法,创建 Channel,创建 Channel 时选择私信通道。创建后,请提交小米审核。
Warning一旦创建 Channel 并发送了带有 Channel 的消息,设备上即会生成这个 Channel,不能删除也不能修改,所以请谨慎创建 Channel。
-
审核通过后,请登录 ZEGO 控制台,添加 resourceID,步骤如下:
-
选择项目管理,查看对应的项目。
-
选择 服务配置- 即时通讯 页面,下滑到“自定义推送策略(resourcesID)配置,点击“添加 resourceID”。
-
填入
resourceID
(由您自定义,不超过 32 个字符)、您在小米控制台添加的channel_id
(渠道 ID,必需)、channel_name
(渠道名称,可选)、channel_description
(渠道描述,可选)。Note建议 resourceID 能够直接反映推送目的。例如,目的是打电话,就可以命名为
call_resource
。
-
-
在发起呼叫时,可以指定使用该 Resource ID 对应的通道进行推送。您需要将配置的 Resource ID 填写到对应的呼叫邀请按钮中或者设置给呼叫邀请接口,即可在呼叫邀请的时候使用离线推送功能。