全部產品
Search
文件中心

Quick Tracking:Android SDK

更新時間:Nov 21, 2025

使用QuickTracking Android(A/B Testing)必備操作。

SDK基本資料

檔案名稱

版本號碼

md5

檔案大小

QuickTracking ABTest SDK

1.1.0

更新日誌:Android SDK更新日誌

118558e221e439f429c05d61200037ed

61KB

1.整合代碼明細

A/B Testing SDK 依賴Android SDKv1.6.4及以上版本,在使用前請確保已經成功整合QuickTracking 統計SDK,並進行了SDK初始化,詳情可參考引入&配置SDK

2.編程實驗

2.1整合與初始化SDK

首先您需要使用同步方式初始化QuickTracking 統計SDK。初始化QuickTracking 統計SDK 完成之後,再初始化QuickTracking A/B Testing SDK。在QuickTracking A/B Testing SDK 初始化時需要傳入請求分流實驗的地址,請聯絡營運人員擷取。

2.1.1同步引入方式

在主 modulebuild.gradle 檔案中添加 QT A/B Testing SDK 依賴:

線上包:

dependencies {
    implementation fileTree(include:['*.jar'], dir:'libs')

    //QuickTracking統計分析SDK 
    implementation 'com.lydaas.qtsdk:qt-px-common:1.8.6.PX'
    // QuickTracking A/B Test SDK
    implementation 'com.lydaas.qtsdk:qt-ab-test:1.1.0'
  
}

當地套件:

dependencies {
    implementation fileTree(include:['*.jar'], dir:'libs')
    //QuickTracking統計分析SDK 
    implementation files('libs/qt-px-common-1.8.6.PX.aar')
    // QuickTracking A/B Test SDK
    implementation files('libs/QTABTest-release.aar')

}

2.1.2 SDK初始化

SDK初始化依賴ApplicationContext,請在合適的時候傳入對應的參數:

import com.quicktracking.sdk.android.abtest.QTABTest;
import com.quicktracking.sdk.android.abtest.QTABTestConfigOptions;

try {
    // QT A/B Testing SDK 初始化---完全依賴採集SDK上報資料
   QTABTestConfigOptions config = new QTABTestConfigOptions("您的收數服務地址/abtest_results?appkey=xxxxx");
   //  QT A/B Testing SDK 初始化---非完全依賴採集SDK上報資料,僅使用AB實驗
   QTABTestConfigOptions config = new QTABTestConfigOptions("您的收數服務地址/abtest_results?appkey=xxxxx",10 * 60 * 1000,"自訂的裝置id", new IQTABTestPropertyChanged() {
        @Override
        public void onPropertyChanged(JSONArray abParams) {
            Log.d("ABTest", "onPropertyChanged: " + abParams.toString());
        }
    });
  
    // 初始化需要傳入Context
   QTABTest.startWithConfigOptions(this.getApplicationContext(), config);
} catch (Exception e) {
    e.printStackTrace();
}

配置方法:

public QTABTestConfigOptions(String url,int timeInterval)
public QTABTestConfigOptions(String url)
public QTABTestConfigOptions(String url,int timeInterval, String customDeviceId, IQTABTestPropertyChanged iQTABTestPropertyChanged)

參數

類型

預設值

含義

備忘

url

string

undefined

實驗地址

必傳參數,需設定非Null 字元串。

timeInterval

int

10 * 60 *1000

緩衝更新時常(毫秒)

最大值: 30 * 60 * 1000

最小值: 10 * 1000

可選

custom_id

string

undefined

自訂裝置id(用於只接入AB實驗,而不接入採集模組時使用)

可選

iQTABTestPropertyChanged

IQTABTestPropertyChanged

undefined

AB參數變更回調

可選

import com.quicktracking.sdk.android.abtest;
/**
 * 定義了一個介面 IQTABTestPropertyChanged,用於監聽屬性變化的事件。
 * 
 * <p>該介面包含一個方法 {@link #onPropertyChanged(JSONArray)},當屬性發生變化時會被調用。
 * 
 * @see JSONArray
 */
public interface IQTABTestPropertyChanged {

    /**
     * 當屬性發生變化時觸發的回調方法。
     * 
     * @param abParams 包含屬性變化相關資訊的 JSON 數組。
     *                 該參數通常用於傳遞屬性變化的具體資料或上下文資訊。
     */
    void onPropertyChanged(JSONArray abParams);
}

2.1.3 混淆配置

如果您的應用使用了代碼混淆,請添加如下配置,以避免Quick Tracking和A/B Testing的SDK被錯誤混淆導致SDK不可用。

-keep class com.umeng.** {*;}
-keep class org.repackage.** {*;}

-keep class com.quick.qt.** {*;}
-keep class rpk.quick.qt.** {*;}

# for AB
-keep class com.quicktracking.sdk.android.abtest.** {*;}

-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

2.2擷取實驗變數

初始化QuickTracking ABTest SDK 之後,通過 API 擷取具體實驗的變數值,根據擷取實驗變數值的方式,可分為下面三種策略:

  • fetchABTestFromCache讀取本機快取,緩衝不存在時使用預設值

  • fetchABTestFromServer :忽略本機快取,從服務端擷取資料

  • fetchABTestFromCacheThenServer :優先讀取本機快取,緩衝不存在時從服務端擷取資料

2.2.1使用情境說明

API名稱

情境說明

fetchABTestFromCache

如果對查詢效能有要求,可以使用fetchABTestFromCache API 只從本機快取擷取變數值,缺點是無法及時命中最新的實驗結果

fetchABTestFromServer

如果您進行時間片輪轉實驗,且對實驗的時效性有要求,可以使用fetchABTestFromServer API 擷取實驗變數值,缺點是可能會存在一定的網路延遲

fetchABTestFromCacheThenServer

預設情況下,建議使用此API,兼顧查詢效能和時效性考慮,該API會優先從本機快取擷取變數值,如果本機快取不命中結果,則查詢AB實驗服務端最新資料

2.3API 介紹

fetchABTestFromCache

/**
* 從緩衝中擷取實驗結果
*
* @param paramName 參數名
* @param defaultValue 預設值
* @param <T> 傳回值類型
* @return the t
*/
<T> T fetchABTestFromCache(String paramName, T defaultValue);
請求參數

參數

類型

預設值

含義

備忘

param_name

string

undefined

實驗參數名

必傳參數,需設定非Null 字元串。

default_value

String | Boolean | Integer | JSONObject

undefined

實驗參數預設結果值

必傳參數,需和當前實驗值結果類型保持一致。

如參數對應的實驗實值型別為NUMBER類型,則傳入的default_value也必須是number類型,同時返回的result實驗結果也是number類型

重要

注意:請確保對A/B分流介面中使用的預設值,都做了正常的商務邏輯處理!

返回結果

參數

類型

預設值

含義

備忘

<T> T

String | Boolean | Integer | JSONObject

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

fetchABTestFromServer

/**
 * 從網路請求實驗結果
 *
 * @param <T>            預設值類型
 * @param paramName      參數名
 * @param timeoutMillSeconds 逾時時間(毫秒)
 * @param defaultValue   預設值
 * @param callback       回調介面
 */
<T> void fetchABTestFromServer(String paramName, int timeoutSeconds, T defaultValue, OnABTestResultCallBack<T> callback);
請求參數

參數

類型

預設值

含義

備忘

paramName

string

undefined

實驗參數名

必傳參數,需設定非Null 字元串。

timeoutSeconds

int

3000

分流實驗服務端請求逾時時間

非必傳參數

defaultValue

String | Boolean | Integer | JSONObject

undefined

實驗參數預設結果值

必傳參數,需和當前實驗值結果類型保持一致。

如參數對應的實驗實值型別為NUMBER類型,則傳入的default_value也必須是number類型,同時返回的result實驗結果也是number類型

<T> T

String | Boolean | Integer | JSONObject

undefined

實驗參數結果值

設定的實驗結果值必須要和實驗實值型別一致,否則sdk會認為是異常實驗結果。同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

callback

Function

分流實驗結果值回呼函數

必傳參數

Callback說明:

import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;

public interface OnABTestResultCallBack<T> {
    /**
     * 請求回調
     *
     * @param result <T> 預設值類型
     */
    void onResult(T result);
}

返回參數:

參數

類型

預設值

含義

備忘

<T> T

String | Boolean | Integer | JSONObject

undefined

實驗參數結果值

設定的實驗結果值必須要和實驗實值型別一致,否則sdk會認為是異常實驗結果。同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

重要

注意:請確保對A/B分流介面中使用的預設值,都做了正常的商務邏輯處理!

返回結果

參數

類型

預設值

含義

備忘

result

String | Boolean | Integer | JSONObject

undefined

實驗參數結果值

設定的實驗結果值必須要和實驗實值型別一致,否則sdk會認為是異常實驗結果。同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

使用樣本
import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;
import com.quicktracking.sdk.android.abtest.QTABTest;

QTABTest.shareInstance().fetchABTestFromServer("", 10 * 1000, null, new OnABTestResultCallBack<JSONObject>() {
    @Override
    public void onResult(JSONObject result) {
        refreshLogView(result.toString());
    }
});

fetchABTestFromCacheThenServer

 /**
     * 如果本地有緩衝,則返回快取資料;否則從網路請求最新的實驗資料,可自訂逾時時間
     *
     * @param <T>          預設值類型
     * @param paramName    參數名
     * @param timeout      逾時時間
     * @param defaultValue 預設值
     * @param callback     回調介面
     */
    <T> void fetchABTestFromCacheThenServer(String paramName, int timeout, T defaultValue, OnABTestResultCallBack<T> callback);
請求參數

參數

類型

預設值

含義

備忘

paramName

string

undefined

實驗參數名

必傳參數,需設定非Null 字元串。

timeoutSeconds

int

3000

分流實驗服務端請求逾時時間

非必傳參數

defaultValue

String | Boolean | Integer | JSONObject

undefined

實驗參數預設結果值

必傳參數,需和當前實驗值結果類型保持一致。

如參數對應的實驗實值型別為NUMBER類型,則傳入的default_value也必須是number類型,同時返回的result實驗結果也是number類型

<T> T

String | Boolean | Integer | JSONObject

undefined

實驗參數結果值

設定的實驗結果值必須要和實驗實值型別一致,否則sdk會認為是異常實驗結果。同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

callback

Function

分流實驗結果值回呼函數

必傳參數

Callback說明:

import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;

public interface OnABTestResultCallBack<T> {
    /**
     * 請求回調
     *
     * @param result <T> 預設值類型
     */
    void onResult(T result);
}

返回參數:

參數

類型

預設值

含義

備忘

<T> T

String | Boolean | Integer | JSONObject

undefined

實驗參數結果值

設定的實驗結果值必須要和實驗實值型別一致,否則sdk會認為是異常實驗結果。同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

重要

注意:請確保對A/B分流介面中使用的預設值,都做了正常的商務邏輯處理!

返回結果

參數

類型

預設值

含義

備忘

result

String | Boolean | Integer | JSONObject

undefined

實驗參數結果值

設定的實驗結果值必須要和實驗實值型別一致,否則sdk會認為是異常實驗結果。同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

使用樣本
import com.quicktracking.sdk.android.abtest.OnABTestResultCallBack;
import com.quicktracking.sdk.android.abtest.QTABTest;

QTABTest.shareInstance().fetchABTestFromCacheThenServer("param_json", 10 * 1000, null, new OnABTestResultCallBack<JSONObject>() {
    @Override
    public void onResult(JSONObject result) {
    }
});

3.調試實驗

開啟實驗後

image

開啟log時會列印出您對應的實驗列表

image