参考:极光厂商通道集成指南
https://www.yuque.com/docs/share/307d6d68-0cc2-41b6-935b-4ca8c77c63d5#Q5EVY
本文是以它作蓝本作的精简优化。以便在集成中方便使用。
针对Android Studio开发环境,提供了Maven仓集成方式的SDK包。在开始开发前,您需要将SDK集成到您的Android Studio开发环境中。
本集成是在极光推送SDK已集成的基础上进行的。
注意厂商版本和JPush SDK版本保持一致(以JPushSDK3.6.0为例。如果需要升级jpush SDK版本,注意厂商SDK版本的升级)。
小米集成指南
主要步骤为:
- 1、使用JCenter自动化集成步骤
- 2、配置AndroidManifest.xml集成步骤
- 3、小米SDK的编译混淆问题
- 4、点击通知跳转到指定Activity
- 5、集成结果判断
- 6、厂商通道测试方法
1、使用JCenter自动化集成步骤
a.配置SDK的Maven仓地址
a1.打开Android Studio项目级“build.gradle”文件。
项目级:是指整个项目的根目录下
a2.确认Android Studio的Project根目录的主gradle中配置了jcenter支持。(新建project默认配置就支持)
buildscript {
repositories {
jcenter()
}
}
allprojects {
repositories {
jcenter()
}
}
b.添加编译依赖
b1.打开Android Studio应用级(或库级)module的“build.gradle”文件。
应用级(或库级):
在应用级(或库级)module的gradle中dependencies节点添加如下代码
注意厂商版本和JPush SDK版本保持一致(以JPushSDK3.6.0为例。如果需要升级jpush SDK版本,注意厂商SDK版本的升级)。
dependencies{
//...
implementation 'cn.jiguang.sdk.plugin:xiaomi:3.6.0'
}
c.配置注册信息
c1.打开Android Studio应用级module的“build.gradle”文件。
注意:注册信息必然配置在应用级module的“build.gradle"文件。否则应用无法有效获取占位符配置的注册信息。
c2.在应⽤module的gradle中defaultConfig节点添加如下代码(不要遗漏前缀MI-)
defaultConfig {
//...
manifestPlaceholders = [
//START极光占位符配置信息:注意包名一致性
JPUSH_PKGNAME:"您应用的包名",
XIAOMI_APPKEY:"MI-您的应用对应的小米的APPKEY",//小米平台注册的appkey
IAOMI_APPID:"MI-您的应用对应的小米的APPID"//小米平台注册的appid
//...其他
//END极光占位符配置信息
]
}
d.同步工程
在完成以上的配置后,点击工具栏中的gradle同步图标,完成“build.gradle”文件的同步,将相关依赖下载到本地。
说明
如果出现错误
1.请检查网络连接是否正常,以及检查gradle文件是否正确。
2.配置SDK的Maven仓地址
2、配置AndroidManifest.xml集成步骤
说明:(JCenter自动化集成与配置AndroidManifest.xml集成二者选择一种即可,如果您完成以上步骤1,您可以跳过本段步骤2)
(略)
3、小米SDK的编译混淆问题
如果使用了proguard,需要在配置文件中加入,可以防止一个误报的warning导致无法成功编译:
-dontwarn com.xiaomi.push.**
-keep class com.xiaomi.push.**{*;}
4、点击通知跳转到指定Activity
5、集成结果判断
a.成功
能成功调用接口获取到小米rid,存在小米集成成功但rid为null的情况。(需要在主进程中获取)
//在Application的生周命周期时调用获取小米rid的API方法。成功时会显示获取的rid。(可能为null的情况估计是初始未完成)
//再查看控制台日志显示。极光的日志显示集成厂商的一般有一个厂商插件用来辅助管理上传厂商的rid。
ushClient.getRegId(getApplicationContext());
b.失败
b.1.缺少appkey或appid。打印:
xiaomisdkappkeyorappidwasempty,pleasecheckyourmanifestconfig
b.2.当配置都正常时,小米sdk注册失败时miui会打印E级别的日志,一般是appkey、appid非法。打印:
"xiaomipushregisterfailed-errorCode:" + message.getResultCode() + ",reason:" + message.getReason());
b.3.当配置都正常时,无法通过方法MiPushClient.getRegId获得regID,需要检查一下小米应用是否开启推送功能。打印:
[PluginXiaomiPlatformsReceiver]xiaomipushregisterfailed-errorCode:22022,reason:Invalidpackagename:com.xxxxxx.xxxxxx
6、小米厂商通道测试方法
- 在您的App中集成极光3.2.0及以上版本的SDK,并且按照「第三方通知通道集成指南」集成所需的厂商SDK
- 联系极光销售确认已开通厂商通道,如果成功开通则按照以下截图(极光官网-应用信息-推送设置-厂商通道)填写小米相关参数,保存后启用;
- 保持App在前台运行,尝试对设备进行推送;
- 如果应用收到消息,将App退到后台,并且杀掉所有App进程;
- 再次进行推送,如果能够收到推送,则表明厂商通道集成成功。
华为集成指南
主要步骤为:
- 第 1 步 添加配置信息
- 第 2 步 配置SDK地址
- 第 3 步 集成服务
1、添加华为 HMS SDK
第 1 步 添加配置文件
(以下示例适用于Android Studio)
将“agconnect-services.json”文件拷贝到Android Studio项目的应用级根目录下。
//agconnect-services.json文件在华为开发者中心网站 配置信息有更改的,此文件也需要重新下载,以保持一致性
a) 下载配置文件“agconnect-services.json”。
b) 将Android Studio切换到项目视图
c) 将“agconnect-services.json”添加到应用级module根目录下(参见下图)
第 2 步 配置SDK地址
添加配置文件后,需要在Android Studio项目中配置maven仓地址和AppGallery Connect插件地址。
1. 设置项目级的build.gradle(配置maven仓地址和AppGallery Connect插件地址。)
a. 打开AndroidStudio项目级build.gradle文件。
b. 在allprojects ->repositories里面配置maven仓地址。
c. 在buildscript->repositories中配置maven仓地址。
d. 在buildscript->dependencies中配置AppGallery Connect插件地址。
allprojects {
repositories {
//Add Maven
maven {url 'https://developer.huawei.com/repo/'}
}
}
...
buildscript{
repositories {
//Add Maven
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
// Add this line
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
2. 设置应用级module的build.gradle(添加编译依赖和AppGallery Connect插件地址。)
a. 打开应用级的build.gradle文件。
b. 在文件尾添加AppGallery Connect插件依赖。
c. 在“dependencies”中添加agconnect-core的编译依赖。
dependencies {
// Add this line
implementation 'com.huawei.agconnect:agconnect-core:1.3.1.300'
}
...
// Add to the bottom of the file
apply plugin: 'com.huawei.agconnect'
第 3 步 集成服务
完成以上步骤后,您已经成功将SDK基础库添加到您的工程。如果您要集成其他服务,请转到对应的服务页面参照指导集成。
1.添加编译依赖
b1.打开Android Studio应用级(或库级)module的“build.gradle”文件。
应用级(或库级):
在应用级(或库级)module的gradle中dependencies节点添加如下代码
注意厂商版本和JPush SDK版本保持一致(以JPushSDK3.6.0为例。如果需要升级jpush SDK版本,注意厂商SDK版本的升级)。
dependencies{
//...
implementation 'com.huawei.hms:push:4.0.2.300'
implementation 'cn.jiguang.sdk.plugin:huawei:3.6.0'
}
2、配置AndroidManifest.xml集成步骤
(略)
3、华为HMS SDK的编译混淆问题
如果使用了 proguard,需要在配置文件中加入,可以防止一个误报的 warning 导致无法成功编译
-ignorewarning
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
如果开发者使用了AndResGuard,需要在混淆配置文件中加入AndResGuard白名单。
```
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",
"R.string.upsdk_*",
"R.layout.hms*",
"R.layout.upsdk_*",
"R.drawable.upsdk*",
"R.color.upsdk*",
"R.dimen.upsdk*",
"R.style.upsdk*",
"R.string.agc*"
```
4.集成结果判断
成功
打印结果如下:
I/JIGUANG-JPush: [PluginHuaweiPlatformsService] onNewToken:AOOkWX-Pg81gPcB7hneOV3928MOwA5Dm62NTocNU1DnfqvXYzubvh4rsGbVsSffmA3bZ0TZOMWhL62-BcNAyo4QPq9GmS5fK_Vz8sMZHYQW96OU8XiE2-i8YBJRmuRL6-Q
D/JIGUANG-JPush: [ActionHelper] doAction:third_action
D/JIGUANG-JPush: [ThirdPushManager] doAction,action:action_register_token,bundle:Bundle[{third_key_action=action_register_token, token=AOOkWX-Pg81gPcB7hneOV3928MOwA5Dm62NTocNU1DnfqvXYzubvh4rsGbVsSffmA3bZ0TZOMWhL62-BcNAyo4QPq9GmS5fK_Vz8sMZHYQW96OU8XiE2-i8YBJRmuRL6-Q, platform=2}],enable:true
I/JIGUANG-JPush: [ThirdPushManager] uploadRegID regid:AOOkWX-Pg81gPcB7hneOV3928MOwA5Dm62NTocNU1DnfqvXYzubvh4rsGbVsSffmA3bZ0TZOMWhL62-BcNAyo4QPq9GmS5fK_Vz8sMZHYQW96OU8XiE2-i8YBJRmuRL6-Q
失败
在华为控制台上面的应用没有开通推送服务配置配置。支持的Emui系统下会有如下打印获取不到token:
W/JIGUANG-JPush:[HWpushHelper] get token error:907122036: no right
或者是如下打印
I/JIGUANG-JPush:[HWpushHelper] token:
处理方法:华为控制台推送服务--服务状态请确认为开通,具体可以参考厂商通道相关参数申请教程--华为相关参数获取部分。
6.华为厂商测试方法
(测试前请务必确认华为控制台推送服务--服务状态请确认为开通,具体可以参考厂商通道相关参数申请教程--华为相关参数获取部分)
- 在您的App中集成极光3.2.0及以上版本的SDK,并且按照「第三方通知通道集成指南」集成所需的厂商SDK;
- 联系极光销售确认已开通厂商通道,如果成功开通则按照以下截图(极光官网应用信息-推送设置-厂商通道)填写华为相关参数,保存后启用;
3.将集成好的App(测试版本)安装在测试机(需要运行 EMUI版本 5.0及以上的手机)上,并且运行App;
4.保持App在前台运行,尝试对设备进行推送;
5.如果应用收到消息,将App退到后台,并且杀掉所有App进程;
6.再次进行推送,如果能够收到推送,则表明厂商通道集成成功。