People
People
Section titled People该模块用于识别用户并修改用户档案属性(设置、仅设置一次、追加、递增、删除)。
可在以下位置访问:
tracker.analytics.people
顶层别名:tracker.analytics.identify(...) → 等同于 tracker.analytics.people.identify(...)
Signatures
Section titled Signatures// Identify a user (required before other operations except reset)
tracker.analytics.people.identify(user_id: string, options?: { fromTracker: boolean }): void
// Reset local user context & properties (optionally, destroy device id)
// should be called on logout and session end
tracker.analytics.people.reset(hard?: boolean): void
// Delete user on backend, then reset local properties
tracker.analytics.people.deleteUser(): void
// Set properties (overwrite existing values)
tracker.analytics.people.setProperties(properties: Record<string, string | number>): void
tracker.analytics.people.setProperties(key: string, value: string | number): void
// Set properties only if they don't exist yet
tracker.analytics.people.setPropertiesOnce(properties: Record<string, string | number>): void
// Append values to an existing property (string becomes array)
tracker.analytics.people.appendValues(key: string, value: string | number): void
// Append value only if it’s not already present (requires property to exist locally)
tracker.analytics.people.appendUniqueValues(key: string, value: string | number): void
// Increment (or decrement) a numeric property
tracker.analytics.people.increment(key: string, value: number): void
// Read current user id
tracker.analytics.people.user_id: string | null | undefined
identify
Section titled identify通过字符串 id(电子邮件、用户名、内部 id 等)识别当前用户,并将一个身份事件加入队列。
tracker.analytics.people.identify("nikita@openreplay.com")
如果之前已经识别了另一个用户,SDK 会在切换到新 id 之前重置本地的 people 属性。
options.fromTracker 在内部使用,用于避免重复调用 tracker 层级的 id 钩子;通常你不需要它。
reset
Section titled reset重置当前用户 id 以及所有本地 people 属性。
// soft reset
tracker.analytics.people.reset()
// hard reset (also clears persistent device id)
tracker.analytics.people.reset(true)
deleteUser
Section titled deleteUser在后端删除当前已识别的用户(通过发送删除变更),然后清除本地状态。
tracker.analytics.people.deleteUser()
如果没有识别任何用户,则此调用不执行任何操作。
调用之后,user_id 将被清除,本地属性也会被擦除。
setProperties
Section titled setProperties设置用户属性,覆盖现有的值。
tracker.analytics.people.setProperties({
plan: "pro",
seats: 5,
})
// or key/value
tracker.analytics.people.setProperties("plan", "enterprise")
保留键/默认键(tracker 内部键)在 SDK 的本地缓存中会被忽略。
会将一个事件加入队列,其中包含你传入的完整 properties 负载。
setPropertiesOnce
Section titled setPropertiesOnce仅在属性尚不存在时设置属性(从 SDK 的本地视角来看)。
tracker.analytics.people.setPropertiesOnce({
signup_source: "docs",
first_seen_at: Date.now(),
})
只有本地 people 缓存中尚未存在的属性才会在本地被写入。
无论如何,仍会将一个 setPropertyOnce 变更事件连同你传入的属性一起加入队列。
appendValues
Section titled appendValues向现有属性追加一个值。如果该属性当前是字符串/数字,则会变为数组。
// start with something
tracker.analytics.people.setProperties({ tags: "new" })
// append
tracker.analytics.people.appendValues("tags", "beta-user")
只有当该属性在本地已经存在时,SDK 才会更新本地缓存。
追加变更事件始终会被加入队列。
appendUniqueValues
Section titled appendUniqueValues仅在值尚不存在时才追加该值。
tracker.analytics.people.setProperties({ tags: ["new"] })
tracker.analytics.people.appendUniqueValues("tags", "new") // no change
tracker.analytics.people.appendUniqueValues("tags", "beta-user") // appended
如果该属性在本地尚不存在,此调用不会执行任何操作(立即返回)。请先通过 setProperties / setPropertiesOnce 进行设置。
increment
Section titled increment向数字属性加上一个数字(包括负值)。
tracker.analytics.people.increment("logins", 1)
tracker.analytics.people.increment("credits", -10)
如果该属性在本地不存在,则在递增之前会先初始化为 0。
如果该属性存在但不是数字,SDK 会抛出错误。
兼容 Mixpanel 的别名
Section titled 兼容 Mixpanel 的别名所有方法都支持为方便熟悉而提供的兼容层:
tracker.analytics.people.set // setProperties
tracker.analytics.people.set_once // setPropertiesOnce
tracker.analytics.people.append // appendValues
tracker.analytics.people.union // appendUniqueValues
tracker.analytics.people.incrementBy // increment
典型流程
tracker.analytics.people.identify("user_123")
tracker.analytics.people.setProperties({
email: "user@example.com",
plan: "pro",
})
tracker.analytics.people.increment("sessions", 1)
tracker.analytics.people.appendUniqueValues("features_used", "analytics")
请记住,自 1.24.0 起,OpenReplay 会话仅支持单个用户,这意味着新用户会在会话中覆盖前一个用户。
切换用户时,也请使用 forceNew 选项重启 tracker。
tracker.analytics.people.identify("user_a")
tracker.analytics.people.setProperties({ plan: "free" })
// switching user resets local people properties automatically
tracker.analytics.people.identify("user_b")