快应用 A/B Testing SDK 依赖于神策分析快应用 SDK v0.9.0 及以上版本,在使用前请确保已经成功集成依赖于神策快应用 SDK,并进行了 SDK 初始化,详情可参考 SDK 集成 (快应用 SDK)。
集成方式
集成神策分析快应用 SDK。
集成快应用 A/B Testing SDK,在快应用 SDK 初始化时需要传入请求分流试验的地址,请联系运营人员获取(创建具体的试验后,可下载 SDK 说明文档/复制具体代码示例)。
// app.ux import sensors from './utils/sensorsdata.min.js'; import abtest from './utils/abtest.esm.min.js'; export default { onCreate() { // 完成快应用 SDK 的初始化必须传入this,不然在Page中无法引用sensors。 var that = this; // 快应用 A/B Testing 插件集成 sensors.usePlugin(abtest, { app: that, url: "分流试验请求地址" }) sensors.init(that) } }
A/B Testing SDK API
获取试验变量 API
初始化 SDK 之后,通过 API 获取具体试验的变量值,根据获取试验变量值的方式,可分为下面三种策略:
- fetchCacheABTest :读取本地缓存,缓存不存在时使用默认值
- asyncFetchABTest :忽略本地缓存,从服务端获取数据
- fastFetchABTest :优先读取本地缓存,缓存不存在时从服务端获取数据
如何确定应该选择哪个API获取试验变量值?
1.一般情况下,我们推荐使用fastFetchABTest获取试验变量值。
2.如果您对性能有要求,可以使用fetchCacheABTest, 只从本地缓存中获取变量值,但可能导致用户无法及时命中最新的试验。
3.如果您进行时间片轮转试验,且对时效性有要求,可以使用asyncFetchABTest 获取试验变量值,但会存在一定的网络延迟。
1. 请确保对A/B分流返回的 result 结果 & 接口中使用的默认值,都做了正常的业务逻辑处理!
2. 请确保默认值 default_value 和当前试验值类型相同。比如参数对应试验值为 Int 类型,则传入的 default_value 也必须是 Int 类型,同时返回的试验结果 result 也是 Int 类型
以 fastFetchABTest 为例,可在相应的业务逻辑中添加如下代码:
// 页面中使用 abtest 接口
// Number 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值)
this.$app.sensorsABTest.fastFetchABTest({
param_name:"具体的试验参数",
default_value:0,
value_type:"Number",
callback: function(result){
// TODO 请根据 result 进行自己的试验
}
});
获取设备主体试验变量
SDK支持使用设备主体进行分流。需要您在初始化SDK时,将匿名ID设置为公共属性。初始化并设置公共属性的具体方式如下:
// app.ux
import sensors from './utils/sensorsdata.min.js';
import abtest from './utils/abtest.esm.min.js';
export default {
onCreate() {
// 完成快应用 SDK 的初始化必须传入this,不然在Page中无法引用sensors。
var that = this;
// 快应用 A/B Testing 插件集成
sensors.usePlugin(abtest, {
app: that,
url: "分流试验请求地址"
})
//设备主体分流需要将匿名ID设置为公共属性
sensors.registerApp({
anonymous_id: sensors.getAnonymousID()
});
sensors.init(that)
}
}
后续可以使用
- fetchCacheABTest :读取本地缓存,缓存不存在时使用默认值
- asyncFetchABTest :忽略本地缓存,从服务端获取数据
- fastFetchABTest :优先读取本地缓存,缓存不存在时从服务端获取数据
三种方式同获取试验变量
代码示例
// 神策埋点 SDK 初始化
// import 从 GitHub 中下载的最新的 sensorsdata.min.js,及 abtest.esm.min.js 文件
import sensors from './utils/sensorsdata.min.js';
import abtest from './utils/abtest.esm.min.js';
sensors.setPara({
server_url: '数据接收地址',
})
export default {
onCreate() {
var that = this;
// 快应用 A/B Testing 插件集成
sensors.usePlugin(abtest, {
app: that,
url: "分流试验请求地址"
});
// 完成快应用 SDK 的初始化必须传入this,不然在Page中无法引用sensors。
sensors.init(that);
},
onShow(){
// 获取试验结果,abtest 对象在页面中使用时需要像 app.js 页面中一样先引入此对象
abtest.fastFetchABTest({
param_name: "具体的试验参数",
default_value: 0,
value_type: "Number",
callback: function(result){
// 获取用户命中的试验结果,针对用户可能命中的试验进行处理
switch(result) {
case 0:
break;
case 1:
// 试验组 1 的处理逻辑
break;
case 2:
// 试验组 2 的处理逻辑
break;
// ……
// ……
default:
// 其他情况的处理逻辑
break;
}
}
});
}
}
调试试验
可以通过录入调试设备的方式,把小程序用户加入到指定分组中;加入调试后,会强制命中当前试验指定的分组(调试设备在调试状态和正式上线阶段都会生效)。
集成神策分析快应用 SDK 后,在开发者工具控制台中查看任意一条数据,可以获取当前用户的 distinct_id。在开发版及体验版中,通过手机打开控制台也可以通过类似方式获取到 distinct_id。
将此 distinct_id 对应的值复制录入调试设备列表中,在创建试验时,直接将指定调试设备录入到对应试验分组。
版本要求和兼容性
- 快应用 SDK v0.9.0 及以上版本
- 快应用 A/B Testing SDK v0.0.3 及以上版本
- 快应用 App 的 onShow 生命周期钩子是在 1070 版本中添加的,所以此方法的调用需要保证保证使用的版本在 1070 以上