使用QuickTracking Android(A/B Testing)必备操作。
引用和初始化SDK
sdk基本信息
SDK名称 | 版本号 | md5 | 包名 |
QuickTracking 鸿蒙Next SDK A/B Testing 插件 | 最新版本:1.0.0 | b5a8c8fd9ac6e3b028a6c8d614884d04 | @quicktracking/abtesting |
目前鸿蒙Next Next SDK A/B Testing 只支持离线接入,离线包获取请点击鸿蒙ABSDK离线包1.0.0.zip
集成代码明细
A/B Testing SDK 依赖QuickTracking 统计SDKv1.6.4及以上版本,在使用前请确保已经成功集成QuickTracking 统计SDK,并进行了SDK初始化,详情可参考鸿蒙Next SDK。
编程实验
集成与初始化SDK
首先您需要使用同步方式初始化QuickTracking 统计SDK。初始化QuickTracking 统计SDK 完成之后,再初始化QuickTracking A/B Testing SDK。在QuickTracking A/B Testing SDK 初始化时需要传入请求分流试验的地址,请联系运营人员获取。
同步引入方式
在主 module 的 oh-package.json5 文件中添加 QT A/B Testing SDK 依赖,目前鸿蒙next仅支持本地包接入:
{
...
"dependencies": {
"@quicktracking/common": "file:./lib/common.har",
"@quicktracking/analytics": "file:./lib/qt_tongji.har",
"@quicktracking/abtesting": "file:./lib/abtesting.har"
}
}
SDK存放地址
SDK初始化
SDK初始化依赖@quicktracking/common
初始化,同时传入相应的AB参数
import * as QT from '@quicktracking/analytics';
import { QTABTestPlugin,QTABTestConfigOptions } from '@quicktracking/abtesting';
QT.setLogEnabled(true);
QT.setTrackDomain("收数域名", "备用收数域名")
export default class MyAbilityStage extends AbilityStage {
onCreate() {
// 构建AB 实验参数初始化
let config: QTABTestConfigOptions =
new QTABTestConfigOptions("您的收数服务地址/abtest_results?appkey=xxxxx", 5 * 60 * 1000);
QT.preInit({
appKey: '您的appkey',
context: this.context.getApplicationContext(),
enableJSBridge: true,
enableAutoTrackApplication: true,
enableAutoTrackPage: false,
plugins: [new QT.InternalPlugin()],
newPlugins: [new QTABTestPlugin(this.context.getApplicationContext(), config)]
});
QT.init();
}
}
配置方法:
// 快速AB测试接口
export class QTABTestConfigOptions {
mUrl: string = '';// AB实验地址---必传
mInterval?: number; // 缓存更新时间---选填
}
参数说明
参数 | 类型 | 默认值 | 含义 | 备注 |
url | string | undefined | 实验地址 | 必传参数,需设置非空字符串。 |
timeInterval | int | 10 * 60 *1000 | 缓存更新时常(毫秒) 最大值: 30 * 60 * 1000 最小值: 10 * 1000 | 可选 |
获取实验变量
初始化QuickTracking ABTest SDK 之后,通过 API 获取具体试验的变量值,根据获取试验变量值的方式,可分为下面2种策略:
// 快速AB测试接口
export interface IQuickTrackABTestApi {
// 从缓存中获取AB测试数据
fetchABTestFromCache(param: QT_AB_API_PARAMS): void;
// 从服务器获取AB测试数据
fetchABTestFromServer(param: QT_AB_API_PARAMS): void;
}
使用场景说明
API名称 | 场景说明 |
fetchABTestFromCache | 如果对查询性能有要求,可以使用fetchABTestFromCache API 只从本地缓存获取变量值,缺点是无法及时命中最新的实验结果 |
fetchABTestFromServer | 如果您进行时间片轮转实验,且对实验的时效性有要求,可以使用fetchABTestFromServer API 获取实验变量值,缺点是可能会存在一定的网络延迟 |
API 介绍
QT_AB_API_PARAMS
export interface QT_AB_API_PARAMS {
param_name: string; // 请求参数
value_type: QT_AB_EXPERIMENT_VARIABLE_TYPE; //数据格式类型
default_value: QT_AB_EXPERIMENT_VARIABLE_VALUE; // 默认值
callback: OnABTestResultCallBack; // 回调
timeout_milliseconds?: number; // (可选)超时时间
update_interval_milliseconds?: number; //(可选)缓存更新时间
}
请求参数
参数 | 类型 | 默认值 | 含义 | 备注 |
param_name | string | undefined | 实验参数名 | 必传参数,需设置非空字符串。 |
value_type | "STRING" | "NUMBER" | "BOOLEAN" | "JSON" | "INTEGER" | undefined | 数据类型 | 必传参数,需和当前实验值结果类型保持一致。 "JSON" 参数在鸿蒙next中为Record |
default_value | string | number | boolean | object | null | undefined | Record<string, string | number | boolean | object>; | undefined | 实验参数默认结果值 | 必传参数,需和当前实验值结果类型保持一致。 如参数对应的实验值类型为NUMBER类型,则传入的default_value也必须是number类型,同时返回的result实验结果也是number类型 |
callback | OnABTestResultCallBack | undefined | 回调 | |
timeout_milliseconds | number | 30 * 1000 | (可选)超时时间 | 网络请求超时时间 |
update_interval_milliseconds | number | 30 * 60 * 1000 | (可选)缓存更新时间 |
注意:请确保对A/B分流接口中使用的默认值,都做了正常的业务逻辑处理!
返回结果
参数 | 类型 | 默认值 | 含义 | 备注 |
<T> T | string | number | boolean | object | null | undefined | Record<string, string | number | boolean | object>; | undefined | 实验参数结果值 | 设置的实验结果值必须要和实验值类型一致,否则sdk会认为是异常实验结果。同时请注意result返回的结果在业务中都做了正常的业务逻辑判断 |
使用示例
import com.quicktracking.sdk.android.abtest.QTABTest;
// 请求返回String参数
String result = QTABTest.shareInstance().fetchABTestFromCache("param_string", "test");
// 请求返回Boolean参数
Boolean result = QTABTest.shareInstance().fetchABTestFromCache(getTextValue(), false);
// 请求返回Number参数
Integer result = QTABTest.shareInstance().fetchABTestFromCache(getTextValue(), 1);
//请求返回JSONObject参数
try{
JSONObject result = QTABTest.shareInstance().fetchABTestFromCache(getTextValue(), null);
}catch (Exception e){
}
使用实例:
import { QTABTest, QT_AB_API_PARAMS, QT_AB_EXPERIMENT_VARIABLE_VALUE } from '@quicktracking/abtesting';
...
Button('请求JSON')
.controlSize(ControlSize.SMALL)
.buttonStyle(ButtonStyleMode.EMPHASIZED)
.onClick(() => {
const param: QT_AB_API_PARAMS = {
param_name: this.areaText,
value_type: "JSON",
default_value: new Object({
"name": "test",
}),
callback: (result: QT_AB_EXPERIMENT_VARIABLE_VALUE) => {
this.refreshLogText(JSON.stringify(result))
}
}
QTABTest.sharedInstance.fetchABTestFromServer(param)
QTABTest.sharedInstance.fetchABTestFromCache(param)
})
...
调试试验
开启实验后
开启log时过滤[abtest]
会打印出您对应的实验列表
- 本页导读
- 引用和初始化SDK
- sdk基本信息
- 集成代码明细
- 编程实验
- 集成与初始化SDK
- 同步引入方式
- SDK初始化
- 获取实验变量
- 使用场景说明
- API 介绍
- 调试试验