MAB实验的APP/小程序优化场景支持关闭体验一致性,即允许用户进组/出组;关闭后,调优会针对实验的配置参数来进行调优,而未关闭场景下会针对实验组版本(VID)进行调优,两个场景下的实验SDK集成方式有差异。本文以客户端实验为例,为您介绍关闭体验一致性后的实验集成思路与操作要点。
对比项 | MAB实验未关闭“体验一致性” | MAB实验关闭“体验一致性” |
|---|---|---|
调优基准 | 调优会针对实验的实验组版本(VID)来进行调优 | 调优会针对实验的配置参数来进行调优 |
实验SDK集成思路 | MAB实验SDK集成方式与普通A/B实验类似,没有特殊逻辑。 | 为了获取MAB实验的配置参数,并计算对应进组与转化指标,您需要客在使用该功能时,同步上报MAB实验配置参数对应的维度值到事件公共属性 |
下文为您介绍关闭“体验一致性”后,实验SDK集成的操作要点。
您需要先手动创建一个自定义的“事件公共属性”,用于后续上报MAB实验配置参数的维度值。事件公共属性的配置要求如下:
mab_arm。string。配置示例如下。
注意
getVar获取配置val此种方式进行客户端集成时,需要调用两次getVar方法:
getVar,拿到分流结果值后将该分流结果值以事件公共属性mab_arm的方式进行设置。getVar,保障第二次调用getVar时,能将mab_arm的属性值给带过来。建议您可以在调用第二次getVar时,再做业务逻辑判断。
注意
通过两次调用getVar方法,先获取分流结果并设置为公共属性,再二次调用确保属性生效,实现后续事件自动携带mab_arm。
mab_arm,无需手动处理。getVar,获取实验分流结果;config方法设置为事件公共属性mab_arm;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 }) } });
此种方式进行客户端集成时,建议在实验SDK接入时,先通过getAllVar获取所有的配置,遍历拿到指定配置后,设置公共属性后,然后再正常调用getVar方法并处理逻辑。
getAllVars获取所有实验配置,提取目标配置值并设置为公共属性。getVar处理业务逻辑,减少曝光事件上报次数。注意
事件属性的方式:
getAllVars获取所有实验配置;val(配置值),通过config方法设置为公共属性mab_arm;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调试文档。以Web/Js SDK为例,调试的详细操作可参考:Web/JS SDK 调试及数据验证。