鸿蒙Next SDK

更新时间:2025-03-28 07:49:05

使用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 初始化时需要传入请求分流试验的地址,请联系运营人员获取。

同步引入方式

在主 moduleoh-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存放地址

image

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)
  })
...

调试试验

开启实验后

image.png

开启log时过滤[abtest]会打印出您对应的实验列表

image.png

  • 本页导读
  • 引用和初始化SDK
  • sdk基本信息
  • 集成代码明细
  • 编程实验
  • 集成与初始化SDK
  • 同步引入方式
  • SDK初始化
  • 获取实验变量
  • 使用场景说明
  • API 介绍
  • 调试试验
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等