experiment
experiment 是 sdk 的 AB 实验对象,提供 AB 实验的初始化、实验分流和实验曝光等功能
init
使用 experiment.init 方法初始化 AB 实验功能
// 请确保初始化成功后再调用 AB 实验的其他功能 API
try {
const initResult = await sdk.experiment.init({
game_id: '***', // 必选:项目游戏 ID,联系「苏」获取
api_key: '***', // 必选:项目 API KEY,联系「苏」获取
user_id: '***', // 必选:玩家小游戏 openid,玩家唯一标识。开发联调时可提供 openid 给「苏」加入实验的对照组/实验组白名单进行不同组的测试验证
enable_auto_exposure: false, // 可选:自动上报实验曝光(默认 true)。当该值为 true 时,在调用 getVariation() 时会自动上报实验曝光,如果该值为 false 时,需要手动调用 trackExposure() 上报实验曝光。实验曝光应该在玩家真正“看到”或“使用到”实验变体时才调用上报,比如玩家看到了变体的 UI,体验到变体的功能时才上报
});
if (initResult) { // true | false
console.log("初始化成功", initResult)
} else {
console.log("初始化失败", initResult)
}
} catch(error) {
console.log("初始化失败", error)
}getVariation
getVariation(experimentId: string): Variation
获取实验分流信息,返回玩家在某个 AB 实验下被分配的实验组/实验变体信息。variation 对象包含实验变体属性,并必须使用 getBoolValue, getNumberValue, getStringValue 等 3 个 API 来读取实验变体的配置参数。
实验的配置参数截图示例(Demo 实验):

特殊说明:调试期(非正式上线)的实验,需要找「苏」加 openid 白名单到对照组/实验组,这样在开发联调时获取的「配置参数」的值才会符合预期。
// 传入实验层 id,获取实验分流信息(用户被分配到该实验的哪个实验组/实验变体)
const variation = sdk.experiment.getVariation("实验层 ID");
if (variation === undefined) {
console.log('该用户的流量不参与该实验(即不会分流到对照组或实验组) 或 其他异常,请执行默认版本');
} else {
// 用户被分流到该实验的对照组或实验组,即用户被分配到所属的实验变体了
// 现在可以获取实验变体的配置参数并在代码中直接使用这些参数。以下 API 的参数 1 为配置参数的 key;参数 2 为获取不到时的默认值
const isShowBanner = variation.getBoolValue("is_show_banner", true);
if (isShowBanner) {
console.log('执行显示Banner业务逻辑');
} else {
console.log('执行不显示Banner业务逻辑');
}
// 其他示例(请自行定义好获取不到配置参数时的默认值)
// 1. 如果在实验平台配置 number 参数
const test1 = variation.getNumberValue("test1", 10);
// 2. 如果在实验平台配置 string 参数
const test2 = variation.getStringValue("test2", "red");
// 3. 如果在实验平台配置 json 参数(json 会转为字符串)
const test3 = variation.getStringValue("test3", "{\"a\":1,\"b\":2}");
// 4. 如果在实验平台配置 boolean 参数
const test4 = variation.getBoolValue("test4", true);
}trackExposure
trackExposure(variation: Variation)
手动曝光实验,当使用 experiment.init 设置了 enable_auto_exposure 为 false 时,您需要对上面获取的实验分流/变体信息进行手动曝光,当 variation 为 undefined 时不用曝光。
// 在实验变体信息被使用时,触发上报实验曝光。实验曝光应该在玩家真正“看到”或“使用到”实验变体时才调用上报,比如玩家看到了变体的 UI,体验到变体的功能时才上报。
sdk.experiment.trackExposure(variation);