用户关联
用户关联是为了对用户进行唯一标识,提高用户行为分析的准确性。目前神策提供了简易用户关联和全域用户关联,分别用于支撑不同的业务场景。
用户属性
- 关于事件属性和用户属性的区别,请参考数据模型
- 用户属性的命名约束,请参考数据格式
设置用户属性
setProfile() 方法可以设置用户属性,同一个 key 多次设置时,value 值会进行覆盖替换:
sensors.setProfile({email:'xxx@xx'});
记录初次设定的用户属性
setOnceProfile() 方法可以设置用户属性,如果属性不存在则设置,存在就不设置。
sensors.setOnceProfile({email:'xxx@xx'});
埋点事件采集
在 SDK 初始化完成之后,您可以通过以下接口进行数据埋点。
代码埋点追踪事件
SDK 初始化后,可以通过 track() 方法追踪用户行为事件,并为事件添加自定义属性。
sensors.track('MyEvent',{prop1:'value1'});
事件名和事件属性的格式规范,请参考数据格式。
事件公共属性
设置事件静态公共属性
对于所有事件都需要添加的属性,初始化 SDK 后,可使用 register 将属性注册为公共属性:
sensors.register({
current_url: location.href,
referrer: document.referrer
});
设置事件动态公共属性
对于一些值会变化的公共属性,如当前游戏等级、最新金币余额等,可以注册动态公共属性。
sensors.register({
random: () => {
return Math.random();
}
});
上面的属性值 random 在每次事件生成的时候,都会去重新计算
清除公共属性
通过 register 注册的公共属性,可以通过 clearRegister 进行清楚,传入 key 名就可以。
sensors.clearRegister([ 'url' , 'name' ]);
上面的属性值 random 在每次事件生成的时候,都会去重新计算
批量发送
注意
- 默认不需要配置 batch_send,如果要修改默认值的时候,再进行配置修改。
详细配置参数如下:
sensors.init({
batch_send:{
flush_interval: 10000,
flush_bulk_size: 10,
max_cache_size: 50,
datasend_timeout: 30000
}
})
| |
参数 |
默认 |
功能 |
| 1 |
flush_interval |
10000 ms |
每隔多少秒发送 |
| 2 |
flush_bulk_size |
10 条 |
超出多少条发送 |
| 3 |
datasend_timeout |
30000 ms |
一次请求的最大超时时间 |
| 4 |
max_cache_size |
50 条 |
数据最多存多少条 |
- 不配置 batch_send ,或者配置 batch_send: true ,都是走默认就是批量发送的逻辑。
- 如果不走批量发送,走单条发送,配置 batch_send:false 就可以,但是失败了不会重试。
- 还有一种来一条发一条的方案,可以配置 flush_bulk_size 为 1。
- 批量发送的原理:来一条数据,就存到本地缓存。存储和发送分离。
- 发送的时机:
- 1. 每隔一定时间(flush_interval)
- 2. 超过配置的条数(flush_bulk_size)
- 3. 每次 SDK ready(init 初始化完成)