A/B Testing 技术对接指南 Current: Android SDK 集成(A/B Testing) Android SDK 集成(A/B Testing) A/B Testing SDK 依赖于神策分析 SDK v4.3.6 及以上版本,在使用前请确保已经成功集成神策分析 SDK,并进行了 SDK 初始化,详情可参考 SDK 集成(Android)。 1. SDK 集成在主 module 的 build.gradle 文件中添加 A/B Testing SDK 依赖: apply plugin: 'com.android.application' dependencies { // 添加 A/B Testing SDK 依赖 implementation 'com.sensorsdata.analytics.abtesting:SensorsABTesting:0.2.3' } GROOVY 2. 初始化 SDK在神策分析中创建 A/B Testing 后,会生成分流试验请求 URL,通过该 URL 初始化 A/B Testing SDK: import com.sensorsdata.abtest.SensorsABTest; import com.sensorsdata.abtest.SensorsABTestConfigOptions; try { // 确保先初始化神策分析 SDK(参考文档 https://manual.sensorsdata.cn/sa/latest/tech_sdk_client_android_basic-17563982.html) // A/B Testing SDK 初始化 SensorsABTestConfigOptions abTestConfigOptions = new SensorsABTestConfigOptions("分流试验请求地址"); SensorsABTest.startWithConfigOptions(this, abTestConfigOptions); } catch (Exception e) { e.printStackTrace(); } JAVA 3. 获取试验变量初始化 SDK 之后,通过 API 获取具体试验的变量值,根据获取试验变量值的方式,可分为下面三种策略:fetchCacheABTest :读取本地缓存,缓存不存在时使用默认值asyncFetchABTest :忽略本地缓存,从服务端获取数据fastFetchABTest :优先读取本地缓存,缓存不存在时从服务端获取数据 asyncFetchABTest 和 fastFetchABTest 接口会在主线程回调试验变量值fetchCacheABTest 接口会在当前线程返回试验变量值请确保对A/B分流返回的 result 结果 & 接口中使用的默认值,都做了正常的业务逻辑处理! 以 fastFetchABTest 为例,可在相应的业务逻辑中添加如下代码: import com.sensorsdata.abtest.SensorsABTest; import com.sensorsdata.abtest.OnABTestReceivedData; try { // Integer 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值) SensorsABTest.shareInstance().fastFetchABTest("具体的试验参数", 0, new OnABTestReceivedData<Integer>() { @Override public void onResult(Integer result) { // TODO 根据 result 处理相应逻辑 switch (result) { case 0: break; case 1: // 试验组 1 的处理逻辑 break; case 2: // 试验组 2 的处理逻辑 break; // …… // …… default: // 其他情况的处理逻辑 break; } } }); } catch (Exception e) { e.printStackTrace(); } JAVA 4. 携带自定义属性获取试验变量v0.1.1 及以上版本 SDK 支持自定义属性扩充受众筛选能力,可以在初始化 SDK 后,通过 API 添加自定义属性获取具体试验的变量值,根据获取试验变量值的方式,可分为下面 2 种策略:asyncFetchABTest:忽略本地缓存,从服务端获取数据fastFetchABTest:优先读取本地缓存,缓存不存在时从服务端获取数据 asyncFetchABTest 和 fastFetchABTest 接口会在主线程回调试验变量值 以 fastFetchABTest 为例,可在相应的业务逻辑中添加如下代码: import com.sensorsdata.abtest.SensorsABTest; import com.sensorsdata.abtest.SensorsABTestConfigOptions; import com.sensorsdata.abtest.OnABTestReceivedData; import com.sensorsdata.abtest.SensorsABTestExperiment; // 当前为 Integer 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值) try { SensorsABTestExperiment experiment = SensorsABTestExperiment.newBuilder("具体的试验参数", 0) .addProperty("自定义属性对应英文名", "自定义属性对应 value") // 自定义属性 .create(); SensorsABTest.shareInstance().fastFetchABTest(experiment, new OnABTestReceivedData<Integer>() { @Override public void onResult(Integer result) { // TODO 请根据 result 进行自己的试验 } }); } catch (Exception e) { e.printStackTrace(); } JAVA 自定义属性值支持字符串、字符串数组、数值、布尔和日期时间格式,并且属性名支持英文、数字、下划线,且不能以数字开头。 5. 调试试验先将设备录入到调试设备管理列表中,在创建试验时,直接将指定调试设备录入到对应试验分组。 录入前请确保 App 已正确配置 Scheme调试设备在调试状态和正式上线阶段都会生效 注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。