如何标识用户
最后更新于:2019-04-01 11:38:14
本节您需要达成如下目标:
理解用户标识原理和用户关联
理解神策支持的用户关联方案
根据自家产品的形态确定关联方案
1.1、用户标识原理
1.2、怎样做用户关联
1.2.1 客户端接入实施方法
客户端接入是指使用 iOS / Android / JavaScript 等 SDK 进行埋点,具体调用流程如下:
- 在 SDK 初始化完成之后,神策的 SDK 会自动生成一个设备 ID 作为用户标识。
- 在用户进行登录/注册或任何可以拿到登录 ID 的操作的时候,客户端主动调用
login(登录 ID)
接口。 - 在用户注销的时候,有几种选择:
- 不做任何操作,这样的话相当于神策会继续使用之前的用户标识来进行追踪。如果没有特殊情况,一般建议选择该方式。
- 主动调用
logout()
方法,这样会清空登录 ID,重新使用设备 ID 作为用户标识,一般情况没有必要选择此方式。 - 对于 JavaScript SDK,还可以调用
logout(true)
方法,该方法除了清空登录 ID 之外,还会重新初始化设备 ID。
备注一:
SDK 类型 | 前端获取前端缓存中 ID 的方法 |
---|---|
安卓 | 通过 getAnonymousId 方法 获取神策分析 SDK 分配的 匿名 ID,String AnonymousId=SensorsDataAPI.sharedInstance().getAnonymousId(); |
iOS | 通过 anonymousId 方法可获取神策分析 iOS SDK 分配的 匿名 ID,获取当前用户的匿名id NSString *anonymousId = [[SensorsAnalyticsSDK sharedInstance] anonymousId];(swift 代码示例:let anonymousId:String = SensorsAnalyticsSDK.sharedInstance().anonymousId())。 |
JavaScript | JavaScript SDK 获取 Cookie 中的 distinct_id ,可以通过 sensors.store.getDistinctId(); 方法获取。 |
微信小程序 | sensors.store.getDistinctId(); |
1.2.2 服务端接入实施方法
服务端接入包括使用 Java / Python / PHP 等 SDK,以及直接使用 BatchImporter / LogAgent / FormatImporter 等工具进行导入的情况,具体流程如下:
- 在进行服务端埋点或者历史数据导入时,如果当前在
track
或者profile_set
等接口里传入的 distinct_id 是一个登录 ID,那么 is_login_id 的参数值必须为 true,来告诉神策这是一个登录 ID 产生的行为,以 Java SDK 为例:- 如果是登录 ID 产生的行为:
sa.track(registerId, true, "SubmitOrderDetail", properties);
- 如果是匿名 ID 产生的行为:
sa.track(deviceId, false, "SubmitOrderDetail", properties);
- 如果是登录 ID 产生的行为:
- 对于任意一个登录 ID,只要导入过任意数据,那么该登录 ID 后面将不能和任何设备 ID 进行关联。因此在进行历史数据(即接入神策之前产生的数据)的导入时,建议按照下面的方式操作:
- 先进行正常的 SDK 接入,并且保证所有用户都正常的通过了 login/track_signup 接口进行用户关联,在运行一段时间之后再导入历史数据,因为这个时候大部分活跃用户都应该已经成功进行了关联。
- 如果历史数据中存在登录 ID 和其对应设备 ID 的对应关系,那么也可以先把这批数据构造 track_signup 请求进行导入,然后再导入具体的用户行为或者用户属性数据即可。
- 由于客户端埋点存在一定的数据丢失概率,我们建议开发者也在服务端的注册接口里调用 track_signup 方法,将新用户的 设备 ID 和登录 ID 进行关联,以实现更准确的用户识别。
1.3、神策支持的用户关联方案
1.3.1 方案一:只使用设备 ID
1.3.2 方案二:关联设备 ID 和登录 ID(一对一)
1.3.3 方案三:关联设备 ID 和登录 ID(多对一)
1.4、如何结合自家的业务设计自己的关联方案
《空缺》