Windows C++

使用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 *

默认值

  • 如果valueTypeJSON类型,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 *

参数名称,非空字符串

valueType

const char *

值类型

  • NUMBER

  • JSON

  • STRING

  • BOOLEAN

defaultValue

const char *

默认值

  • 如果valueTypeJSON类型,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 *

默认值

  • 如果valueTypeJSON类型,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