华为AppGallery Connect服务,提供有AB测试功能,可以已经正常使用的Push通知或者远程配置,创建对照试验测试,用于对比不同方案的区别,可以帮助产品或者运营的同事,通过科学数据选择最佳方案。
下面是在华为AGC平台,从零开始使用推送通知类AB测试的实战指导教程。如有不对的地方,还请多多指导。
首先,使用推送通知类AB测试之前,需要完成华为Push服务的集成,该步骤属于前置条件,属于必须集成的步骤。 部分同学的应用可能使用的是三方平台提供的合一的Push服务,例如个推友盟极光等三方平台,只要正确完成集成即可,对于该场景下的可以无需执行如下步骤。
下面介绍最简单的,在Android平台第一方集成华为Push的步骤,大家也可以直接参考华为Push的官方文档进行集成。
- buildscript {
- repositories {
- maven { url 'https://developer.huawei.com/repo/'}
- }
- dependencies {
- classpath 'com.huawei.agconnect:agcp:1.5.2.300'
- }
- }
- allprojects {
- repositories {
- maven { url 'https://developer.huawei.com/repo/'}
- }
- }
-
2、添加AGCP插件与agc配置文件
1、在应用级build.gradle添加如下agcp插件
apply plugin: 'com.huawei.agconnect'
2、在AGC控制台的 我的项目 –> 项目设置 下,下载agconnect-services.json文件,将其下载到项目的app路径下

- dependencies {
- implementation 'com.huawei.hms:push:5.3.0.301'
- implementation 'com.huawei.hms:hianalytics:5.3.1.300'
- }
如下为简单的Android代码,我只是在一个完全新建的Android工程中,添加了一个申请Token按钮。
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- findViewById(R.id.button).setOnClickListener(view -> {
- getToken();
- });
-
- }
-
- private void getToken() {
- // 创建一个新线程
- new Thread() {
- @Override
- public void run() {
- try {
- // 从agconnect-service.json文件中读取appId
- String appId = "your_APPId";
- // 输入token标识"HCM"
- String tokenScope = "HCM";
- String token = HmsInstanceId.getInstance(MainActivity.this).getToken(appId, tokenScope);
- Log.i(TAG, "get token: " + token);
- // 判断token是否为空
- if(!TextUtils.isEmpty(token)) {
- sendRegTokenToServer(token);
- }
- } catch (ApiException e) {
- Log.e(TAG, "get token failed, " + e);
- }
- }
- }.start();
- }
- private void sendRegTokenToServer(String token) {
- Log.i(TAG, "sending token to server. token:" + token);
- }
需要在应用的build.gradle文件中配置相应的签名文件,如果没有签名文件,可以手动生成一个,步骤如下:
点击Build –> 选择Generate Signed Bundle or APK –> 选择APK –> 下一步选择Create New,添加签名文件。

生成签名文件以后,对应的应用级build.gradle文件的配置的相关配置如下:
- android {
- signingConfigs {
- config {
- // xxx替换为您自己的签名文件
- keyAlias 'xxx'
- keyPassword 'xxxx'
- storeFile file('xxx.jks')
- storePassword 'xxxx'
- }
- }
-
- buildTypes {
- debug {
- signingConfig signingConfigs.config
- }
- release {
- signingConfig signingConfigs.config
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
- }
- }
- }
6、生成并且配置SHA256签名
6.1 执行keytool命令
keytool -list -v -keystore <keystore-file>,其中 <keystore-file>为应用签名证书的完整路径,命令示例如下

6.2 将SHA256配置到AGC界面

生成AB测试的报告,需要使用华为分析服务,因此需要在代码中集成华为分析SDK,由于AB测试事件属于华为分析的自动采集事件,因此华为分析的集成步骤非常简单:
1、在应用级build.gradle添加SDK依赖
- dependencies {
- implementation 'com.huawei.hms:hianalytics:5.3.1.300'
- }
2、在OnCreate中初始化华为分析
- HiAnalyticsTools.enableLog();
- HiAnalyticsInstance instance = HiAnalytics.getInstance(this);
App运行与获取Push Token的相关日志如下

在AGC界面,选择我的项目,在项目上选择推送服务 – 选择 添加推送通知;
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/
按要求随便查看一个Push测试,并且定向推动到指定设备,此时填入上一个步骤申请的Token。 点击提交以后,可以看到相应的测试效果。

在AGC界面,选择我的项目 –> 选择 AB测试 – 右上角选择创建通知实验。
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/

需要注意的是:
也就是说,今天选择的受众群组,只能覆盖到昨天的用户。所以要注意隔天进行测试。
- public void getAAID() {
- Task<AAIDResult> idResult = HmsInstanceId.getInstance(this).getAAID();
- idResult.addOnSuccessListener(new OnSuccessListener<AAIDResult>() {
- @Override
- public void onSuccess(AAIDResult aaidResult) {
- // 获取AAID方法成功
- String aaid = aaidResult.getId();
- Log.d(TAG, "getAAID successfully, aaid is " + aaid );
- }
- }).addOnFailureListener(new OnFailureListener() {
- @Override
- public void onFailure(Exception myException) {
- // 获取AAID失败
- Log.d(TAG, "getAAID failed, catch exceptio : " + myException);
- }
- });
- }

对于已运行的实验,可以在右侧操作栏点击 报告 查看相应的AB测试数据报告,界面参考如下:

1、华为AGC AB测试操作文档
2、华为Push SDK开发指南:
3、华为分析服务SDK 开发指南: