使用QuickTracking Android(A/B Testing)必備操作。
引用和初始化SDK
sdk基本資料
SDK名稱 | 版本號碼 | md5 | 包名 |
QuickTracking 鴻蒙Next SDK A/B Testing 外掛程式 | 最新版本:1.0.1 | 6b4faeae2b93ba46fd27b3844ecf842b | @quicktracking/abtesting |
目前鴻蒙Next SDK A/B Testing 只支援離線接入,離線包擷取請點擊Harmony_AB_SDK1.0.1.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 | 實驗地址 | 必傳參數,需設定非Null 字元串。 |
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 | 實驗參數名 | 必傳參數,需設定非Null 字元串。 |
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]會列印出您對應的實驗列表
