使用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字面量模板字串
| 是 |
樣本
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 * | 實值型別
| 是 |
defaultValue | const char * | 預設值
| 是 |
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 * | 實值型別
| 是 |
defaultValue | const char * | 預設值
| 是 |
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 * | 實值型別
| 是 |
defaultValue | const char * | 預設值
| 是 |
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.調試實驗
開啟實驗後
