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

3、在应用级 build.gradle 添加 SDK 依赖
dependencies {
implementation 'com.huawei.hms:push:5.3.0.301'
implementation 'com.huawei.hms:hianalytics:5.3.1.300'
}
4、在代码中申请 Push Token
如下为简单的 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);
}
5、配置签名文件
需要在应用的 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
App 运行与获取 Push Token 的相关日志如下

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

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

需要注意的是:
当前实验目标用户只能选择 受众群组, 但是受众群组是来自于华为分析,并且该数据是每日计算,隔天生成。
也就是说,今天选择的受众群组,只能覆盖到昨天的用户。所以要注意隔天进行测试。
创建好的AB测试,可以通过最右侧的操作,选择 调测 来进行Push效果的调测。调测所使用的aaid的获取如下
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 开发指南:
浙公网安备 33010602011771号