数据采集脱敏¶
如果是希望对字段做全脱敏,推荐使用 setDataModifier,表现的性能更好。如果需要细致规则替换推荐 setLineDataModifier
请勿在回调方法中使用复杂或者延迟较高的方法,这会极大影响 SDK 数据写入性能
FTSdk.install(
FTSDKConfig.builder("xxx")
.setDataModifier(new DataModifier() {
/**
* 对某个字段进行更改
*
* @param key 字段名
* @param value 字段值(原始值)
* @return 新的值,返回 null 表示不做更改
*/
@Override
public Object modify(String key, Object value) {
if (key.equals("device_uuid")) {
return "xxx";
}
return null;
}
}).setLineDataModifier(new LineDataModifier() {
/***
* 对某一行数据进行修改
*
* @param measurement 数据指标类型 view,action,resource,
* longtask,error,df_rum_android_log
* @param data 原始数据的 key-value 对
* @return 需要修改的 key-value,(返回 null 或空 map 均为不更改)
*/
@Override
public Map<String, Object> modify(String measurement, HashMap<String, Object> data) {
if(measurement.equals("view")){
HashMap<String,Object> changeMap = new HashMap<String,Object>();
changeMap.put("view_url", "xxx");
}
return null;
}
}))
FTSdk.install(
FTSDKConfig.builder("xxx")
.setDataModifier(object : DataModifier {
/**
* 对某个字段进行更改
*
* @param key 字段名
* @param value 字段值(原始值)
* @return 新的值,返回 null 表示不做更改
*/
override fun modify(key: String, value: Any?): Any? {
return if (key == "device_uuid") {
"xxx" // 替换为自定义 device_uuid
} else {
null
}
}
})
// 批量修改单条数据中的某些字段
.setLineDataModifier(object : LineDataModifier {
/**
* 对某一行数据进行修改
*
* @param measurement 数据指标类型 view,action,resource,
* longtask,error,df_rum_android_log
* @param data 原始数据的 key-value 对
* @return 需要修改的 key-value,(返回 null 或空 map 均为不更改)
*/
override fun modify(
measurement: String,
data: HashMap<String, Any>
): Map<String, Any>? {
return if (measurement == "view") {
hashMapOf("view_url" to "xxx")
} else {
null
}
}
}))