小米辅助通道集成

本章节介绍如何集成移动推送提供的小米辅助通道SDK。

准备工作

  • 已经按照Android SDK接入完成了移动推送SDK的接入。

  • 已经开启了小米推送服务,如未开通,请登录小米开放平台->推送运营平台,创建您的App,并开启应用的推送服务。

  • 已经获取了小米推送密钥,如未获取,请登录小米开发平台,注册您的App,得到注册应用的AppID、AppKey、AppSecret。

  • 已经在EMAS控制台配置了推送密钥,如未配置,请登录EMAS移动推送控制台,设置您的小米推送密钥(AppSecret),设置方法参见配置厂商通道密钥

重要
  • 小米推送目前分为国内SDK和国际版SDK,在创建应用时需要根据自己应用的分发地在推送运营平台确定地区。

  • 如果主要客户在海外,除需要注册中国内地Region外,还需开通对应的海外Region,中国内地和海外Region的AppID、AppKey、AppSecret可能不同。

第一步:将SDK添加到您的应用

我们提供了Maven依赖和本地依赖两种集成方式,方便您根据需要将SDK添加到您的应用中。

说明

建议开发者采用Maven依赖方式进行集成,配置简单,不容易出问题,后续更新方便。

1 Maven依赖方式

在您的模块(应用级)Gradle 文件(通常是<project>/<app-module>/build.gradl)中,在dependencies中添加SDK依赖。

重要
  • 请阅读Android SDK版本说明,下载对应版本SDK或获取最新SDK配置信息。

  • 从v3.8.6版本开始,小米辅助通道分为国内版和国际版,请根据自身应用的分发地确定是接入国内版还是国际版。

  • 如果使用辅助通道扩展包V3.2.0及以上版本,需要将推送SDK升级到V3.2.0及以上版本。

  • 3.2.0及以上版辅助通道扩展包以aar形式透出,省却manifest文件配置,减少出错概率。

  • 3.2.0及之前版本,小米通道依赖包已内置在alicloud-android-third-push中,无需单独添加。

如果应用分发地是国内,请依赖国内版小米辅助通道,gradle添加如下依赖:

dependencies {
    implementation 'com.aliyun.ams:alicloud-android-third-push-xiaomi:x.x.x'
    implementation 'com.aliyun.ams:alicloud-android-third-push:x.x.x'
}

如果应用分发地是海外,请依赖国际版小米辅助通道,gradle添加如下依赖:

dependencies {
    implementation 'com.aliyun.ams:alicloud-android-third-push-xiaomi:x.x.x-intl' //海外版的版本号是x.x.x-intl,如3.8.6-intl
    implementation 'com.aliyun.ams:alicloud-android-third-push:x.x.x'
}

2 本地依赖方式

2.1 下载SDK

参考下载和集成SDK,选择移动推送进行下载,将SDK包内所有文件拷贝至您的模块(应用级)的<project>/<app-module>/libs目录下。

2.2 添加SDK依赖

2.2.1 配置本地SDK目录

在您的模块(应用级)Gradle 文件(通常是<project>/<app-module>/build.gradle)中,添加本地SDK文件目录地址。

repositories {
  flatDir {
    dirs 'libs'
  }
}

2.2.2 添加SDK依赖

在您的模块(应用级)Gradle 文件(通常是<project>/<app-module>/build.gradle)中,的dependencies中添加SDK依赖。

dependencies {
  //根据具体的版本添加依赖
  implementation(name: 'alicloud-android-third-push-3.x.x', ext: 'aar')
  implementation(name: 'alicloud-android-third-push-xiaomi-x.x.x', ext: 'aar')
  //3.2.2版本开始,需要单独添加小米sdk依赖,小米sdk是jar形式
  implementation fileTree(include: ['*.jar'], dir: 'libs')
}

第二步:配置使用SDK

1 SDK初始化

重要

SDK初始化务必在Application中执行且放在推送SDK初始化代码之后,否则可能导致辅助通道注册失败。

1.1 小米辅助通道国内版

如果集成了小米辅助通道国内版,通过如下方式进行初始化:

MiPushRegister.register(applicationContext, "小米AppID", "小米AppKey")
MiPushRegister.register(applicationContext, "小米AppID", "小米AppKey");

1.2 小米辅助通道国际版

如果集成了小米辅助通道国际版,通过如下方式进行初始化:

//务必在调用registerPush前先调用setRegion设置区域
MiPushClient.setRegion(Region.Global)
MiPushRegister.registerPush(applicationContext, "小米AppID", "小米AppKey")
//务必在调用registerPush前先调用setRegion设置区域
MiPushClient.setRegion(Region.Global);
MiPushRegister.registerPush(applicationContext, "小米AppID", "小米AppKey");
重要

初始化小米辅助通道国际版时,一定要先调用MiPushClient.setRegion接口设置数据存储区域,可选区域有:

  • Global - 新加坡

  • Europe - 欧洲德国法兰克福

  • India - 印度孟买

2 混淆配置

如果集成推送SDK的工程开启了代码混淆,需要添加以下辅助通道的Proguard配置。

# 小米通道
-keep class com.xiaomi.** {*;}
-dontwarn com.xiaomi.**

第三步:接入验证

1 打开SDK日志

val pushService = PushServiceFactory.getCloudPushService()
//仅适用于Debug包,正式包不需要此行
pushService.setLogLevel(CloudPushService.LOG_DEBUG)
CloudPushService pushService = PushServiceFactory.getCloudPushService();
//仅适用于Debug包,正式包不需要此行
pushService.setLogLevel(CloudPushService.LOG_DEBUG);      

2 确认成功方法

小米通道初始化成功,可看到以下日志:

小米通道初始化成功日志

收到小米通道下行的消息:

12-09 22:24:34.065 19566-25042/com.xxx D/MPS:MiPushReceiver: onReceiveMessage,msg=[{"f":262,"b":"{\"content\"\ ... ... ,"i":"f__-rnje3_OH74gE|VG0g3kwMnGADAGrXZku1FFW5"}]

3 确认失败方法

若小米通道注册失败(未看到小米注册成功日志),请查看系统日志(logcat设置为NoFiters)。

以PushService|BroadcastQueue为正则式进行过滤,示例如下图:

  • MiPushBroadcastReceiver未配置:

小米通道集成receiver未配置

  • MIPUSH_RECEIVE权限未配置

小米通道集成receiver未配置2

后续步骤

您已经可以通过EMAS后台将推送通知通过辅助通道推送到手机通知栏,但是要处理点击通知后的逻辑,只能通过辅助弹窗来接收推送数据,详情请参见辅助弹窗接入

重要
  • 使用移动推送进行厂商通道推送时(使用移动推送控制台或者OpenAPI进行推送时),服务端必须参考辅助弹窗文档进行服务端配置,若服务端参数不设置,将不会给厂商通道进行推送。

  • Android SDK V2.3.0及以上版本支持小米辅助弹窗。

辅助通道常见问题