在热力引擎中,专门提供了针对用户属性设置数据的上报方法,针对用户的属性添加或变更,您可以通过该方法进行上报。
建议您将与用户相关的不变的、或变化频率比较低、或保存价值比较高的属性,比如年龄、创建角色时间、等级、所在地、首次付费时间、总付费金额等属性设置为用户属性,其它变化频率比较高的属性通过事件进行上报和记录。
用户属性设置分为以下几种方式:userUpdate、userInit、userAdd、userUnset、userAppend、userDelete,由开发者调用,对用户属性进行设置。
注:
- 用户属性格式要求与事件属性保持一致。
- 用户属性设置事件上报时设置的自定义属性均不支持开发者传入"_"下划线开头的 key 值,SDK 会默认丢弃该条属性。
userInit
如果您要上传一批用户属性,其中已经存在的用户属性不去更新属性值、不存在的属性进行创建并保存属性值,则可以调用 userInit 来进行设置。
方法示例
public synchronized void userInit(JSONObject properties);
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
properties | 开发者自定义用户 property 属性 | JSONObject | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
import org.json.JSONObject;
JSONObject properties = new JSONObject();
try {
//开发者自定义Json格式事件属性
properties.put("userName","xiaoming");
properties.put("userLevel","1");
} catch (JSONException e) {
///
}
SolarEngineManager.getInstance().userInit(properties);
userUpdate
对于一般的用户属性,您可以调用 userUpdate 来进行设置,使用该接口上传的属性将会覆盖原有的属性值,如果之前不存在该用户属性,则会新建该用户属性,类型与传入属性的类型一致。此处以设置城市为例。
方法示例
public synchronized void userUpdate(JSONObject properties);
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
properties | 开发者自定义用户 property 属性 | JSONObject | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
import org.json.JSONObject;
JSONObject properties = new JSONObject();
try {
//开发者自定义Json格式事件属性
properties.put("userName","lilei");
properties.put("userLevel","10");
} catch (JSONException e) {
///
}
SolarEngineManager.getInstance().userUpdate(properties);
userAdd
当您要上传数值型的属性时,您可以调用 userAdd 来对该属性进行累加操作,如果该属性还未被设置,则会赋值 0 后再进行计算,可传入负值,等同于相减操作。此处以累计付费金额为例。
方法示例
public synchronized void userAdd(JSONObject properties);
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
properties | 开发者自定义用户 property 属性 | JSONObject | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
import org.json.JSONObject;
JSONObject properties = new JSONObject();
try {
//开发者自定义Json格式事件属性
properties.put("totalRevenue",40);
properties.put("totalGoodsNum",20);
} catch (JSONException e) {
///
}
SolarEngineManager.getInstance().userAdd(properties);
注:value 的数据类型只能为数值型
userUnset
当您要清空用户的用户属性值时,您可以调用 userUnset 来对指定属性(字符串数组)进行清空操作,如果该属性还未在集群中被创建,则 不会 创建该属性。
方法示例
public synchronized void userUnset(String... keys)
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
keys | 自定义属性 key,可以传 String 也可以传 String 数组 | String... | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
String[] keys = new String[]{"userName","userLevel"};
SolarEngineManager.getInstance().userUnset(keys);
userAppend
您可以调用 userAppend 对数组类型的用户属性进行追加操作。如果该属性不存在,则会新建该属性。
方法示例
public synchronized void userAppend(JSONObject properties);
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
properties | 开发者自定义用户 property 属性 | JSONObject | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
import org.json.JSONObject;
import org.json.JSONObject;
JSONObject properties = new JSONObject();
JSONArray goodsList = new JSONArray();
try {
//开发者自定义Json格式事件属性
goodsList.put("trousers");
goodsList.put("shoes");
goodsList.put("cap");
properties.put("goodsList",goodsList);
} catch (JSONException e) {
///
}
SolarEngineManager.getInstance().userAppend(properties);
userDelete
如果您要删除某个用户,可以调用 userDelete 将这名用户删除。用户删除后,您将无法再查询该名用户的用户属性,但该用户产生的事件仍然可以被查询到。
方法示例
public synchronized void userDelete(SEUserDeleteType seUserDeleteType);
参数说明
参数名称 | 参数含义 | 参数类型 | 是否必传 |
seUserDeleteType | 删除类型,枚举值如下:SEUserDeleteType.DELETE_BY_ACCOUNTID:通过AccountId删除用户SEUserDeleteType.DELETE_BY_VISITORID:通过VisitorId删除用户 | SEUserDeleteType | 是 |
调用示例
import com.reyun.solar.engine.SolarEngineManager;
SolarEngineManager.getInstance().userDelete(SEUserDeleteType.DELETE_BY_ACCOUNTID);