You need to enable JavaScript to run this app.
导航
MAB实验SDK集成:支持进组出组(关闭体验一致性)
最近更新时间:2025.10.27 17:43:12首次发布时间:2025.10.27 17:43:12
复制全文
我的收藏
有用
有用
无用
无用

MAB实验的APP/小程序优化场景支持关闭体验一致性,即允许用户进组/出组;关闭后,调优会针对实验的配置参数来进行调优,而未关闭场景下会针对实验组版本(VID)进行调优,两个场景下的实验SDK集成方式有差异。本文以客户端实验为例,为您介绍关闭体验一致性后的实验集成思路与操作要点。

背景信息

对比项

MAB实验未关闭“体验一致性”

MAB实验关闭“体验一致性”

调优基准

调优会针对实验的实验组版本(VID)来进行调优

调优会针对实验的配置参数来进行调优

实验SDK集成思路

MAB实验SDK集成方式与普通A/B实验类似,没有特殊逻辑。

为了获取MAB实验的配置参数,并计算对应进组与转化指标,您需要客在使用该功能时,同步上报MAB实验配置参数对应的维度值到事件公共属性mab_arm中,确保用户后续行为事件能关联到对应的实验分组,无需手动在每个事件中添加该属性。

下文为您介绍关闭“体验一致性”后,实验SDK集成的操作要点。

准备工作

您需要先手动创建一个自定义的“事件公共属性”,用于后续上报MAB实验配置参数的维度值。事件公共属性的配置要求如下:

  • 事件公共属性名称:mab_arm
  • 属性类型:必须为string

配置示例如下。

SDK集成

注意

  • 当前支持两种方式进行实验SDK集成,详细介绍参见下文的 集成方案说明 章节。
  • 以下以客户端为例为您介绍示例代码,服务端的操作类似。

方式一:通过getVar获取配置val

集成方案说明

此种方式进行客户端集成时,需要调用两次getVar方法:

  • 在实际获取分流结果的时机,首先调用一次getVar,拿到分流结果值后将该分流结果值以事件公共属性mab_arm的方式进行设置。
  • 再紧接着调用一次getVar,保障第二次调用getVar时,能将mab_arm的属性值给带过来。

建议您可以在调用第二次getVar时,再做业务逻辑判断。

注意

通过两次调用getVar方法,先获取分流结果并设置为公共属性,再二次调用确保属性生效,实现后续事件自动携带mab_arm

  • 优点:设置公共属性后,后续所有曝光事件及行为事件会自动携带mab_arm,无需手动处理。
  • 缺点:会触发两次曝光事件上报,若客户按事件量计费,需注意由此产生的成本。

操作步骤

  1. 首次调用getVar,获取实验分流结果;
  2. 将结果通过config方法设置为事件公共属性mab_arm
  3. 二次调用getVar,确保请求携带已设置的mab_arm属性,再在此回调中处理业务逻辑。

参考代码:

window.collectEvent('getVar', 'ab-key', 'ab-default-value', (res) => {
    console.log(res)
    if(res){

        window.collectEvent('config',{
            mab_arm: res, // 用户实验配置value
        });
        
        window.collectEvent('getVar', 'ab-key', 'ab-default-value', (res) => {
            // 业务逻辑处理
            // XXX
        })
    }
});

方式二:使用getAllVars先获取vid和配置

集成方案说明

此种方式进行客户端集成时,建议在实验SDK接入时,先通过getAllVar获取所有的配置,遍历拿到指定配置后,设置公共属性后,然后再正常调用getVar方法并处理逻辑。

  • 您需要先调用getAllVars获取所有实验配置,提取目标配置值并设置为公共属性。
  • 再调用getVar处理业务逻辑,减少曝光事件上报次数。

注意

事件属性的方式:

  • 优点:仅触发一次曝光事件上报,降低事件量成本。
  • 缺点:当实验配置较多时,加载全量配置可能造成一定资源消耗,客户端内存可能会有额外占用的情况。

操作步骤

  1. 调用getAllVars获取所有实验配置;
  2. 从全量配置中提取目标实验的val(配置值),通过config方法设置为公共属性mab_arm
  3. 正常调用getVar处理业务逻辑(此时请求已携带mab_arm)。

参考代码:

window.collectEvent('getAllVars', (res) => {
    console.log(res);
    config_val = res['test_key']
    if(config_val) {
        vid = config_val['vid']
        val = config_val['val']
        console.log(vid, val)
        window.collectEvent('config',{
            mab_arm: val, // 用户实验配置value
        });
    }
});
 window.collectEvent('getVar', 'ab-key', 'ab-default-value', (res) => {
    // 业务逻辑处理
    // XXX
});

参考:实验SDK调试

完成实验SDK集成配置后,您可进行SDK调试,验证接入的结果,各端的调试操作可参考对应端的SDK调试文档。以Web/Js SDK为例,调试的详细操作可参考:Web/JS SDK 调试及数据验证