如何标识用户

最后更新于: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 进行关联。因此在进行历史数据(即接入神策之前产生的数据)的导入时,建议按照下面的方式操作:
    • 先进行正常的 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、如何结合自家的业务设计自己的关联方案

《空缺》