1. 概览

在简易用户关联中,神策会通过匿名 ID 和 登录 ID 来标识访问 Web 的用户。并根据上报事件中携带的信息,将用户的匿名 ID 与 登录 ID 进行关联,从而将用户登录前后的行为数据串联起来。

  • 匿名 ID(anonymous_id)默认由神策 SDK 通过自动采集或生成;登录 ID (login_id)需要您通过 主动 调用登录接口进行记录;
  • 匿名 ID 和登录 ID 会被 SDK 持久化存储(存在 cookie 中),并随着每次事件一并上报。

例如,一个用户首次打开 Web,此时触发了一个页面浏览事件($pageview),此事件除了包含事件相关的属性信息外,还会携带一个匿名 ID( SDK 默认采集的值一般为 UUID ):

{
  "anonymous_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",          //匿名 ID
  "distinct_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",           //神策用户标识 distinct_id,在匿名状态下就是匿名 ID
  "lib": {
    "$lib": "js",
    "$lib_method": "code",
    "$lib_version": "1.26.7"
  },
  "identities": {
    "$identity_cookie_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",   
    "$identity_anonymous_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c"
  },   
  "properties": {
    "$timezone_offset": -480,
    "$screen_height": 900,
    "$screen_width": 1440,
    "$viewport_height": 235,
    "$viewport_width": 1440,
    "$lib": "js",
    "$lib_version": "1.26.7",
    "$latest_referrer": "",
    "$is_first_day": true,
    "$is_first_time": false,
    "$url": "http://xx.com/index.html",
    "$title": "bbbb"
  },
  "type": "track",
  "event": "$pageview",             //事件名
  "time": 1711621218552,
  "_track_id": 828798553,
  "_flush_time": 1711621218553
}
CODE

后续用户进行注册登录时,通过主动调用 神策 SDK 提供的登录接口,会触发神策预置的 $SignUp 事件,该事件将记录登录 ID(login_id)等其相关信息。同时在之后的事件中都携带该登录 ID:

{
  "distinct_id": "login_user_xx",                    // 神策用户标识 distinct_id,在登录状态下就是登录 ID,
  "login_id": "login_user_xx",                       // 登录 ID,此用户登录时的 ID 为您传入的值
  "anonymous_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",
  "original_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c", 
  "event": "$SignUp",                                //神策的预置事件,通过主动调用 login 接口触发
  "lib": {
    "$lib": "js",
    "$lib_method": "code",
    "$lib_version": "1.26.7"
  },
  "identities": {
    "$identity_cookie_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",   
    "$identity_anonymous_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",
    "$identity_login_id": "login_user_xx"
  },   
  "properties": {
    "$timezone_offset": -480,
    "$screen_height": 900,
    "$screen_width": 1440,
    "$viewport_height": 235,
    "$viewport_width": 1440,
    "$lib": "js",
    "$lib_version": "1.26.7",
    "$latest_traffic_source_type": "直接流量",
    "$latest_search_keyword": "未取到值_直接打开",
    "$latest_referrer": "",
    "$url": "http://xx.com/index.html",
    "$title": "bbbb"
  },
  "type": "track_signup",
  "time": 1711621966237,
  "_track_id": 785456237,
  "_flush_time": 1711621966237
}
CODE

2. 接口介绍

2.1. 更改匿名 ID

2.1.1. 调用时机

匿名 ID 默认由神策 SDK 自动采集或生成。绝大多数场景下,您无需主动更改 匿名 ID 的值。

在 Web 下,匿名 ID 的取值一般为 UUID (随机数)。若您需要自定义匿名 ID 的值,则可通过调用此接口来实现。

2.1.2. 使用准备

使用该接口前,请确保您对于神策的接口与用户关联概念有深入的了解。

2.1.3. 接口说明

使用示例:

sensors.identify('id_xx1');
JS

版本

SDK 版本 >= 1.26.8

低版本需要使用  sensors.identify('id_xx1', true);

调用此接口后后续的事件数据中的匿名 ID 都会更改,事件示例如下:

{
  "anonymous_id": "id_xx1",
  "distinct_id": "id_xx1",
  "lib": {
    "$lib": "js",
    "$lib_method": "code",
    "$lib_version": "1.26.7"
  },
  "identities": {
    "$identity_cookie_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",   
    "$identity_anonymous_id": "id_xx1"
  },   
  "properties": {
    "$timezone_offset": -480,
    "$screen_height": 900,
    "$screen_width": 1440,
    "$viewport_height": 235,
    "$viewport_width": 1440,
    "$lib": "js",
    "$lib_version": "1.26.7",
    "$latest_traffic_source_type": "直接流量",
    "$latest_search_keyword": "未取到值_直接打开",
    "$latest_referrer": "",
    "$is_first_day": true,
    "$is_first_time": false
  },
  "type": "track",
  "event": "$pageview",
  "time": 1711622687748,
  "_track_id": 278937750,
  "_flush_time": 1711622687750
}
CODE

2.2. 用户登录

2.2.1. 调用时机

当用户进行登录时,您需主动调用此接口,将用户的注册信息(一般为用户在您业务系统中的唯一身份标识)传入。

2.2.2. 使用准备

登录 ID 在神策的用户关联体系中非常重要,因此,强烈建议您在用户发生注册或登录时调用此接口来记录用户的 登录 ID。

2.2.3. 接口说明

sensors.login('login_user_xx');
JS

调用此接口后,SDK 会自动触发神策预置的 $SignUp 事件,事件上报信息示例如下:

{
  "distinct_id": "login_user_xx",                    
  "login_id": "login_user_xx",                       
  "anonymous_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",
  "original_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c", 
  "event": "$SignUp",                               
  "lib": {
    "$lib": "js",
    "$lib_method": "code",
    "$lib_version": "1.26.7"
  },
  "identities": {
    "$identity_cookie_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",   
    "$identity_anonymous_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",
    "$identity_login_id": "login_user_xx"
  },   
  "properties": {
    "$timezone_offset": -480,
    "$screen_height": 900,
    "$screen_width": 1440,
    "$viewport_height": 235,
    "$viewport_width": 1440,
    "$lib": "js",
    "$lib_version": "1.26.7",
    "$latest_traffic_source_type": "直接流量",
    "$latest_search_keyword": "未取到值_直接打开",
    "$latest_referrer": "",
    "$url": "http://xx.com/index.html",
    "$title": "bbbb"
  },
  "type": "track_signup",
  "time": 1711621966237,
  "_track_id": 785456237,
  "_flush_time": 1711621966237
}
CODE

2.3. 用户登出

2.3.1. 调用时机

此接口为高阶接口,绝大多数情况下,您无需调用此接口。

如果同一浏览器上,先后会登录多个账号,且希望账号 A 退出登录后的所有行为信息都归属于后面登录的账号 B。那么基于神策 SDK 会持久化记录匿名 ID 和 登录 ID 的设计。此时您可在账号 A 退出登录时可先调用 用户登出 接口,然后再调用 更改匿名 ID 为匿名 ID 赋予新的值,随后在账号 B 登录时主动调用 用户登录 接口来实现。

2.3.2. 使用准备

  • 此接口为高阶接口,需要配合多个接口,并按照特定的顺序调用,才可产生正确效果。因此建议您在使用前,对于神策的接口与用户关联概念有深入的了解,并对于你的业务场景有深入的了解后再进行使用。

2.3.3. 接口说明

sensors.logout()
CODE

使用示例:

调用此接口后,SDK 会将持久化存储中 login_id 信息删除,且不会触发任何神策系统的预置事件。后续该浏览器上,用户产生的事件,在上报时将不再带有 login_id 信息。

此时,事件数据中的 distinct_id 的值将和 anonymous_id 相同。

例如,用户登出后触发了一个页面浏览事件 “$pageview”,此时的事件示例如下:

{
  "anonymous_id": "id_xx1",
  "distinct_id": "id_xx1",
  "lib": {
    "$lib": "js",
    "$lib_method": "code",
    "$lib_version": "1.26.7"
  },
  "identities": {
    "$identity_cookie_id": "18e84929a117c0-0147a34acc60ec-1c525637-1296000-18e84929a1276c",   
    "$identity_anonymous_id": "id_xx1"
  },   
  "properties": {
    "$timezone_offset": -480,
    "$screen_height": 900,
    "$screen_width": 1440,
    "$viewport_height": 235,
    "$viewport_width": 1440,
    "$lib": "js",
    "$lib_version": "1.26.7",
    "$latest_traffic_source_type": "直接流量",
    "$latest_search_keyword": "未取到值_直接打开",
    "$latest_referrer": "",
    "$is_first_day": true,
    "$is_first_time": false
  },
  "type": "track",
  "event": "$pageview",
  "time": 1711622687748,
  "_track_id": 278937750,
  "_flush_time": 1711622687750
}
CODE