全部產品
Search
文件中心

Quick Tracking:鴻蒙Next SDK

更新時間:Jun 07, 2025

使用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 初始化時需要傳入請求分流實驗的地址,請聯絡營運人員擷取。

同步引入方式

在主 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

實驗地址

必傳參數,需設定非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)
  })
...

調試實驗

開啟實驗後

image.png

開啟log時過濾[abtest]會列印出您對應的實驗列表

image.png