SDK-AB实验

更新时间:2026-06-06 12:00:00OSDK

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 实验):

descript

特殊说明:调试期(非正式上线)的实验,需要找「苏」加 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);

相关文档