SDK 版本需要 >= v1.11.0
用户关联
用户注册/登录
在全域用户关联业务中,用户标识通过 Bind 接口进行绑定。用户登录时调用 bind() 绑定,第一个参数从详细的预置 id key 列表中获取,第二个参数为对应的具体用户 ID。例如,给用户("ABCDEF123456789")绑定手机号:
接口说明:
def bind(self, first_identity, second_identity, *other_identities):
"""
绑定用户标识。至少需要提供两个用户标识信息。identity 的数据类型为 SensorsAnalyticsIdentity。
:param first_identity 待绑定的用户标识
:param second_identity 待绑定的用户标识
:param other_identities 其他需要绑定的用户标识
"""
使用示例:
sa.bind(SensorsAnalyticsIdentity("$identity_mobile", "123"), SensorsAnalyticsIdentity("$identity_email", "a@a.com"))
用户解绑
多用户 ID 取消关联时调用 unbind() 解绑,第一个参数为取消关联的 key,第二个参数为对应的取消关联用户 ID。
接口说明:
def unbind(self, identity):
"""
解除用户标识
:param identity
"""
使用示例:
sa.unbind(SensorsAnalyticsIdentity(SensorsAnalyticsIdentity.EMAIL, "sv1"))
设置用户属性
为了更准确地提供针对人群的分析服务,神策分析 SDK 可以设置用户属性,如年龄、性别等。用户可以在留存分析、分布分析等功能中,使用用户属性作为过滤条件或以用户属性作为维度进行多维分析。
记录用户属性
使用 profile_set_by_id() 设置用户属性:
接口说明:
def profile_set_by_id(self, properties, *identities):
"""
设置用户的属性。如果要设置的 properties 的 key,之前在这个用户的 profile 中已经存在,则覆盖,否则,新创建
:param properties 用户属性
:param identities 用户标识,类型是 SensorsAnalyticsIdentity
"""
示例示例:
sa.profile_set_by_id({"$city":"武汉"}, SensorsAnalyticsIdentity(SensorsAnalyticsIdentity.EMAIL, "sv1"))
对于不再需要的用户属性,可以通过 profile_unset_by_id() 接口将属性删除。用户属性中,属性名称与属性值的约束条件与事件属性相同,详细说明请参考 数据格式。
记录初次设定的属性
对于只在首次设置时有效的属性,我们可以使用 profile_set_once_by_id() 记录这些属性。与 profile_set_by_id() 接口不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。因此,profile_set_once_by_id() 比较适用于为用户设置首次激活时间、首次注册时间等属性。
接口说明:
def profile_set_once_by_id(self, properties, *identities):
"""
首次设置用户的属性。与 profile_set_by_id 接口不同的是:如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建
:param properties 用户属性
:param identities 用户标识,类型是 SensorsAnalyticsIdentity
"""
示例示例:
sa.profile_setonce_by_id({"$city":"武汉"}, SensorsAnalyticsIdentity(SensorsAnalyticsIdentity.EMAIL, "sv1"))
数值类型的属性
对于数值型的用户属性,可以使用 profile_increment_by_id() 对属性值进行累加。常用于记录用户付费次数、付费额度、积分等属性。
接口说明:
def profile_increment_by_id(self, properties, *identities):
"""
为用户的一个或多个数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为 0。属性取值只接受 Number类型。
:param properties 用户属性,类型是 dict,value 必须是 Number 类型
:param identities 用户标识,可以是 identity、list、tuple
"""
使用示例:
sa.profile_increment_by_id({"age": 2}, SensorsAnalyticsIdentity(SensorsAnalyticsIdentity.EMAIL, "sv1"))
列表类型的属性
对于用户喜爱的电影、用户点评过的餐厅、兴趣爱好等属性,可以记录列表型属性。需要注意的是,列表型属性中的元素必须为 string 类型,且元素的值会自动去重。关于列表类型限制请见 数据格式 属性长度限制。
接口说明:
def profile_append_by_id(self, profiles, *identities):
"""
追加一个用户的某一个或者多个集合类型的 Profile。
:param profiles 用户属性,其 key 必须是 str 类型,value 必须是 str 集合类型
:param identities 用户标识,类型是 SensorsAnalyticsIdentity
使用示例:
sa.profile_append_by_id({"interest": ["ball"]}, SensorsAnalyticsIdentity(SensorsAnalyticsIdentity.EMAIL, "sv1"))
埋点事件采集
在 SDK 初始化完成之后,您可以通过以下接口进行数据埋点。
追踪事件
第一次接入神策分析时,建议先追踪 3~5 个关键的事件,只需要几行代码,便能体验神策分析的分析功能。例如:
- 图片社交产品,可以追踪用户浏览图片和评论事件
- 电商产品,可以追踪用户注册、浏览商品和下订单等事件
用户通过 track_by_id() 接口记录事件,对于任何事件,必须包含用户标志符(Identity)和事件名(event)两个参数。用户可以在 TrackById() 的第三个参数传入一个 map[string]interface{} 对象,为事件添加自定义事件属性。以电商产品为例,可以这样追踪一次购物行为:
接口说明:
def track_by_id(self, event_name, properties, *identities):
"""
使用用户标识 3.0 进行事件埋点
:param identity 用户标识
:param event_name 事件名
:param properties 事件属性,数据类型为 dict
"""
使用示例:
sa.track_by_id("ViewProduct", {"ProductName":"XX手机"}, SensorsAnalyticsIdentity(SensorsAnalyticsIdentity.LOGIN_ID, "sv1"))