在即时通讯 IM 中集成小米推送
大约 3 分钟
Andorid 集成文档
在即时通讯 IM 中集成小米推送
环信即时通讯 IM SDK 中已经集成了小米推送(基于 MiPush_SDK_Client_6_0_1-C_3rd.aar)相关逻辑,你还需要完成以下步骤。
步骤一 在小米开放平台创建应用
在 小米开放平台 创建应用,开启推送服务。详见小米官方网站的 推送服务接入指南。
步骤二 上传推送证书
在环信控制台上传推送证书:
登录 环信控制台,选择你的应用 > 功能配置 > 增值功能 > 即时推送。
在 证书管理 页面,点击 添加推送证书。在 添加推送证书 对话框中选择 小米 页签,配置小米推送参数。参数相关信息,详见你在 小米开放平台 创建的应用信息中的 App ID 和 Secret Key 以及程序的包名。

| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| 证书名称 | String | 是 | 小米 App ID。 |
| 推送密钥 | String | 是 | 小米 App Secret。 |
| 应用包名 | String | 是 | 小米 App package name。 |
| Channel ID | String | 是 | Channel ID。该参数仅对离线推送有效。 |
| Action | String | 否 | 点击通知后的动作。该参数仅对离线推送有效。 |
步骤三 集成小米推送 SDK
下载 小米推送 SDK ,将
aar包添加到项目中。配置
AndroidManifest.xml,详见 官方文档。- 推送服务需要的权限列表:
<!--注:若使用小米推送 SDK 3.6.12 版本,需要添加以下权限--> <!-- <uses-permission android:name="android.permission.GET_TASKS"/>--> <!--注:以下三个权限在小米推送 SDK 4.8.0 及以上版本不再依赖--> <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />--> <!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />--> <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />--> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE"/> <permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" android:protectionLevel="signature" /> <!--这里 `com.xiaomi.mipushdemo` 改成 app 的包名--> <uses-permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" /><!--这里 `com.xiaomi.mipushdemo` 改成 app 的包名-->- 推送服务需要配置的 service 和 receiver:
<service android:name="com.xiaomi.push.service.XMPushService" android:enabled="true" android:process=":pushservice" /> <!--注:此 service 必须在小米推送 SDK 3.0.1 版本以后(包括小米推送 SDK 3.0.1 版本)加入--> <service android:name="com.xiaomi.push.service.XMJobService" android:enabled="true" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":pushservice" /> <!--注:com.xiaomi.xmsf.permission.MIPUSH_RECEIVE 这里的包名不能改为 app 的包名--> <service android:name="com.xiaomi.mipush.sdk.PushMessageHandler" android:enabled="true" android:exported="true" android:permission="com.xiaomi.xmsf.permission.MIPUSH_RECEIVE" /> <!--注:此 service 必须在小米推送 SDK 2.2.5 版本以后(包括小米推送 SDK 2.2.5 版本)加入--> <service android:name="com.xiaomi.mipush.sdk.MessageHandleService" android:enabled="true" /> <receiver android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver" android:exported="true"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <receiver android:name="com.xiaomi.push.service.receivers.PingReceiver" android:exported="false" android:process=":pushservice"> <intent-filter> <action android:name="com.xiaomi.push.PING_TIMER" /> </intent-filter> </receiver>自定义一个继承自环信即时通讯 IM SDK 中
EMMiMsgReceiver类的BroadcastReceiver,并进行注册:<receiver android:name=".common.receiver.MiMsgReceiver"> <intent-filter> <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" /> </intent-filter> <intent-filter> <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" /> </intent-filter> <intent-filter> <action android:name="com.xiaomi.mipush.ERROR" /> </intent-filter> </receiver>在即时通讯 IM SDK 初始化的时候,配置启用小米推送。
EMOptions options = new EMOptions(); ... EMPushConfig.Builder builder = new EMPushConfig.Builder(this); builder.enableMiPush(String appId, String appKey); // 将 pushconfig 设置为 ChatOptions options.setPushConfig(builder.build()); // 初始化 IM SDK EMClient.getInstance().init(this, options);
