功能说明

该功能是高级功能,默认不开启。如有需要,请联系您的客户成功经理申请开通。

概述

自定义属性应用场景

神策 A/B 测试支持完全随机试验和定向人群试验。

  • 完全随机试验 指以当日活跃用户作为目标受众,所有进入试验流程并命中试验分桶(命中试验流量比例)的用户,后都将参与分流。
  • 定向试验 指仅针对某一特定人群进行试验,比如VIP会员用户、男性用户或仅安卓设备的用户做试验,这种场景通常可以直接使用神策用户属性或用户分群进行受众筛选。

然而在一些特殊定向试验情况下,用户属性或用户分群圈选方式可能无法满足受众筛选的需求。

【场景描述】在新用户填写资料注册完成后,需针对女性用户(目标受众)立即展示不同的首页功能界面,以评估新的功能方案对女性新用户留存指标的影响。

该场景数据流中,用户注册完成后,会将用户注册资料同步到属性表(或分群表),在用户请求分流时,根据服务端获取的用户属性判断该用户能否命中试验受众。然而用户数据同步往往存在一定延迟,在用户注册完成立即进入首页时,可能还无法获取到该用户的性别属性,导致无法命中试验,为用户展示默认策略。

针对以上类似场景,无法使用常规的属性筛选或用户分群的方式圈选受众。我们引入「自定义属性」功能解决类似以上业务诉求。

什么是自定义属性?

在A/B SDK初始化后,可以通过 API 为用户添加自定义属性,并在用户请求AB分流接口时携带该自定义属性,分流服务根据自定义属变化实时性判断是否满足受众筛选条件,以此来解决用户属性更新可能存在的延迟问题。

功能说明

在试验平台添加自定义属性

在上述试验场景中,假设在新用户注册资料页注册完成立即进入应用首页时,针对女性用户投放不同的会员活动促销方案,以此评估找到适用于女性新用户的最佳会员营销方案。

1. 定义并新建自定义属性

根据试验需求,我们可以定义一个名为「用户注册_性别」的自定义属性,并在试验平台新建该属性,并确定该属性的数据类型为“字符类型”。

(1)自定义属性支持的数据类型:

字符类型(STRING)、集合类型(LIST)、数值类型(NUMBER)、布尔类型(BOOL)和 日期类型(DATATIME)

(2)属性名校验规则

支持英文、数字、下划线,且不能以数字和"$"开头。

  

2. 选择受众用户。

根据试验需求,筛选「用户注册_性别」的属性值为“female”。当用户注册资料性别为“女”,并在接口请求中携带自定义参数值为“female”,即可命中试验。

在代码中添加自定义属性

在使用自定义属性功能时,需确保 SDK 接口中定义的属性名与A/B平台填写的属性名保持一致。包括属性名和数据类型。

下面以 Java SDK 为例,可在相应的业务逻辑中添加自定义属性代码 :

// 当前为 Integer 类型试验(第二个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值)
String distinctId = "fz123456"; // 具体的用户 ID 标识
boolean isLoginId = true; // 当前用户是否是登录 ID
Map<String, Object> properties = Maps.newHashMap();
properties.put("自定义属性对应英文名", "自定义属性对应 value"); // 自定义属性

// 当前为 Integer 类型试验(第四个参数 0,表示未命中试验时,会返回此默认值,请根据业务需要更改此处的值)
Experiment<Integer> experiment = abTest.fastFetchABTest(distinctId, isLoginId, "具体的试验参数", 0, properties);
// TODO 请根据 experiment.getResult() 进行自己的试验
switch (result) {
    case 0:
        break;
    case 1:
        // 试验组 1 的处理逻辑
        break;
    case 2:
        // 试验组 2 的处理逻辑
        break;
    // ……
    // ……
    default:
        // 其他情况的处理逻辑
        break;
}
JAVA

其他SDK端实现方案请查阅:技术对接指南

注意事项

  1. 该功能为高级功能,请联系客户成功经理申请开通
  2. 当前编程试验、时间片轮转试验和多人群试验支持自定义属性
  3. 当前 Android、iOS、Web、微信小程序、C++、Java、Python、Golang和C#端 支持自定义属性(其他 SDK 正在陆续支持中)
  4. 支持在 fastFetchABTest  接口和 asyncFetchABTest 接口使用自定义属性
  5. 在使用自定义属性功能时,需确保 SDK 接口中定义的属性名与A/B平台填写的属性名保持一致(包括属性名和数据类型)