全部產品
Search
文件中心

Quick Tracking:Windows C++ SDK

更新時間:Jun 07, 2025

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

1.引用和初始化SDK

整合代碼明細

A/B Testing SDK 依賴,在使用前請確保已經成功整合Windows C++ SDK,並進行了SDK初始化,詳情可參考引入&配置SDK

2.編程實驗

2.1整合與初始化SDK

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

離線引入方式

請參考統計引入&配置SDK 快速整合描述引入

2.2ABTest SDK初始化

介面函數

//ABTest 初始化
QTFORPC_API QT_VOID initABTest(QT_CSTR serverUrl, QT_MAP options);

參數

參數

類型

描述

是否必填

serverUrl

const char *

服務端地址

options

const char *

屬性參數,參數需要傳入json字面量模板字串

  • experiment_file_path : 字串類型,必傳參數,AB實驗結果快取檔案

  • update_interval_seconds:int類型,選擇性參數,AB實驗輪詢間隔,預設10分鐘

樣本

std::string abOptions = R"({
    "experiment_file_path": "D:\\xxxx\\abcache\\ab_cache.txt",
    "update_interval_seconds": 10
})";

qtInterface->initABTest("http://xxxxx", abOptions.c_str());

開啟日誌

請參考統計SDK 基礎整合功能描述開啟

2.3擷取實驗變數

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

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

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

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

使用情境說明

API名稱

情境說明

fetchABTestFromCache

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

fetchABTestFromServer

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

fetchABTestFromCacheThenServer

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

2.4API 介紹

ABTest 請求緩衝實驗

介面函數:fetchABTestFromCache

//ABTest 請求緩衝實驗
QTFORPC_API QT_VOID fetchABTestFromCache(QT_CSTR paramName, QT_CSTR valueType, QT_MAP defaultValue, QT_AB_CB handler);

參數

參數

類型

描述

是否必填

paramName

const char *

參數名稱

valueType

const char *

實值型別

  • NUMBER

  • JSON

  • STRING

  • BOOLEAN

defaultValue

const char *

預設值

  • 如果valueType是JSON類型,defaultValue需要傳遞json字串字面量形式,例如:R"({"a":1})"

handler

void

回調方法,同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

樣本

qtInterface->fetchABTestFromCache("y_number", "NUMBER", "1", [](const string &result){
    std::cout << result << std::endl;
});
重要

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

ABTest 請求服務端實驗

介面函數:fetchABTestFromServer

//ABTest 請求服務端實驗
QTFORPC_API QT_VOID fetchABTestFromServer(QT_CSTR paramName, QT_CSTR valueType, QT_MAP defaultValue, QT_AB_CB handler, QT_INT timeout_seconds);

參數

參數

類型

描述

是否必填

paramName

const char *

參數名稱,非Null 字元串

valueType

const char *

實值型別

  • NUMBER

  • JSON

  • STRING

  • BOOLEAN

defaultValue

const char *

預設值

  • 如果valueType是JSON類型,defaultValue需要傳遞json字串字面量形式,例如:R"({"a":1})"

handler

void

回調方法,同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

timeout_seconds

int

逾時時間,預設逾時時間為3秒

樣本

qtInterface->fetchABTestFromServer("y_json", "JSON", R"({"a":1})",  [](const string &result){
    std::cout << result << std::endl;
}, 3);
重要

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

ABTest 先請求本機快取實驗結果,如果沒有再請求服務端實驗結果

介面函數:fetchABTestFromCacheThenServer

//ABTest 先請求本機快取實驗結果,如果沒有再請求服務端實驗結果
QTFORPC_API QT_VOID fetchABTestFromCacheThenServer(QT_CSTR paramName, QT_CSTR valueType, QT_MAP defaultValue, QT_AB_CB handler, QT_INT timeout_seconds);

參數

參數

類型

描述

是否必填

paramName

const char *

參數名稱

valueType

const char *

實值型別

  • NUMBER

  • JSON

  • STRING

  • BOOLEAN

defaultValue

const char *

預設值

  • 如果valueType是JSON類型,defaultValue需要傳遞json字串字面量形式,例如:R"({"a":1})"

handler

void

回調方法,同時請注意result返回的結果在業務中都做了正常的商務邏輯判斷

timeout_seconds

int

逾時時間,預設逾時時間為3秒

樣本

qtInterface->fetchABTestFromServerThenCache("y_boolean", "BOOLEAN", "false", [](const string &result){
    std::cout << result << std::endl;
}, 3);
重要

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

3.調試實驗

開啟實驗後

image