SDK 版本需要 >= v2.1.0
用户关联
用户注册/登录
在全域用户关联业务中,用户标识通过 Bind 接口进行绑定。用户登录时调用 Bind() 绑定,第一个参数从详细的预置 id key 列表中获取,第二个参数为对应的具体用户 ID。例如,给用户("ABCDEF123456789")绑定手机号:
接口说明:
///
/// 绑定用户标识
///
/// 用户标识 List,至少需要两个 identity
public void Bind(List identities)
使用示例:
List identities = SensorsAnalyticsIdentityHelper.CreateBuilder()
.AddIdentityProperty("$identity_mobile", "123")
.AddIdentityProperty("$identity_email", "a@a.com")
.Build();
sa.bind(identities)
用户解绑
多用户 ID 取消关联时调用 UnBind() 解绑,第一个参数为取消关联的 key,第二个参数为对应的取消关联用户 ID。
接口说明:
///
/// 解绑用户标识
///
/// 用户标识
public void Unbind(SensorsAnalyticsIdentity identity)
使用示例:
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("$identity_mobile", "123")
sa.unbind(identity);
设置用户属性
为了更准确地提供针对人群的分析服务,神策分析 SDK 可以设置用户属性,如年龄、性别等。用户可以在留存分析、分布分析等功能中,使用用户属性作为过滤条件或以用户属性作为维度进行多维分析。
记录用户属性
使用 ProfileSetById() 设置用户属性:
接口说明:
///
/// 设置用户的属性。如果要设置的 properties 的 key,之前在这个用户的 profile 中已经存在,则覆盖,否则,新创建
///
/// 用户标识 List
/// 用户属性
public void ProfileSetById(List identities, Dictionary properties)
///
/// 设置用户的属性。如果要设置的 properties 的 key,之前在这个用户的 profile 中已经存在,则覆盖,否则,新创建
///
/// 用户标识
/// 用户属性
public void ProfileSetById(SensorsAnalyticsIdentity identity, Dictionary properties)
示例示例:
//1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
//2.用户注册时,填充了一些个人信息,可以用Profile接口记录下来
Dictionary userRecord = new Dictionary();
userRecord.Add("$city", "武汉");
userRecord.Add("$province", "湖北");
userRecord.Add("$name", "昵称123");
userRecord.Add("$signup_time", DateTime.Now);
userRecord.Add("Gender", "male");
userRecord.Add("age", 20);
sa.ProfileSetById(identity, userRecord);
对于不再需要的用户属性,可以通过 ProfileUnsetById() 接口将属性删除。用户属性中,属性名称与属性值的约束条件与事件属性相同,详细说明请参考 数据格式。
记录初次设定的属性
对于只在首次设置时有效的属性,我们可以使用 ProfileSetOnceById() 记录这些属性。与 ProfileSetById() 接口不同的是,如果被设置的用户属性已存在,则这条记录会被忽略而不会覆盖已有数据,如果属性不存在则会自动创建。因此,ProfileSetOnceById() 比较适用于为用户设置首次激活时间、首次注册时间等属性。
接口说明:
///
/// 首次设置用户的属性。与 ProfileSetById 接口不同的是:如果要设置的 properties 的 key,在这个用户的 profile 中已经存在,则不处理,否则,新创建
///
/// 用户标识 List
/// 用户属性
public void ProfileSetOnceById(List identities, Dictionary properties)
///
/// 首次设置用户的属性。与 ProfileSetById 接口不同的是:如果要设置的 properties 的 key,在这个用户的 profile 中已经存在,则不处理,否则,新创建
///
/// 用户标识
/// 用户属性
public void ProfileSetOnceById(SensorsAnalyticsIdentity identity, Dictionary properties)
示例示例:
//1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
//2.设置首次访问时间
Dictionary firstVisitRecord = new Dictionary();
firstVisitRecord.Add("$first_visit_time", DateTime.Now);
// $is_login_id 属性判断 distinct_id 是否为登录 ID,如果是则设置为 true,否则为 false,默认为 false
firstVisitRecord.Add("$is_login_id", true);
sa.ProfileSetOnceById(identity, firstVisitRecord);
数值类型的属性
对于数值型的用户属性,可以使用 ProfileIncrementById() 对属性值进行累加。常用于记录用户付费次数、付费额度、积分等属性。
接口说明:
///
/// 为用户的一个或多个数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0。属性取值只接受Number类型
///
/// 用户标识 List
/// 用户属性
public void ProfileIncrementById(List identities, Dictionary properties)
///
/// 为用户的一个或多个数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0。属性取值只接受Number类型
///
/// 用户标识
/// 用户属性
public void ProfileIncrementById(SensorsAnalyticsIdentity identity, Dictionary properties)
///
/// 为用户的数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0
///
/// 用户标识 List
/// 属性名称
/// 属性值
public void ProfileIncrementById(List identities, String property, long value)
///
/// 为用户的数值类型的属性累加一个数值,若该属性不存在,则创建它并设置默认值为0
///
/// 用户标识
/// 属性名称
/// 属性值
public void ProfileIncrementById(SensorsAnalyticsIdentity identity, String property, long value)
使用示例:
//1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
//2.给属性加值
Dictionary incrementRecord = new Dictionary();
incrementRecord.Add("age", 2);
sa.ProfileIncrementById(identity, incrementRecord);
列表类型的属性
对于用户喜爱的电影、用户点评过的餐厅、兴趣爱好等属性,可以记录列表型属性。需要注意的是,列表型属性中的元素必须为 string 类型,且元素的值会自动去重。关于列表类型限制请见 数据格式 属性长度限制。
接口说明:
///
/// 为用户的一个或多个数组类型的属性追加字符串.
///
/// 用户标识 List
/// 用户属性
public void ProfileAppendById(List identities, Dictionary properties)
///
/// 为用户的一个或多个数组类型的属性追加字符串.
///
/// 用户标识
/// 用户属性
public void ProfileAppendById(SensorsAnalyticsIdentity identity, Dictionary properties)
使用示例:
//1.用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
//2.追加属性,这里追加兴趣爱好
List newInterest = new List();
newInterest.Add("ball");
Dictionary appendRecord = new Dictionary();
appendRecord.Add("interest", newInterest);
sa.ProfileAppendById(identity, appendRecord);
埋点事件采集
在 SDK 初始化完成之后,您可以通过以下接口进行数据埋点。
追踪事件
第一次接入神策分析时,建议先追踪 3~5 个关键的事件,只需要几行代码,便能体验神策分析的分析功能。例如:
- 图片社交产品,可以追踪用户浏览图片和评论事件
- 电商产品,可以追踪用户注册、浏览商品和下订单等事件
用户通过 TrackById() 接口记录事件,对于任何事件,必须包含用户标志符(Identity)和事件名(event)两个参数。用户可以在 TrackById() 的第三个参数传入一个 map[string]interface{} 对象,为事件添加自定义事件属性。以电商产品为例,可以这样追踪一次购物行为:
接口说明:
///
/// 使用用户标识 3.0 方式进行时间埋点
///
/// 用户标识
/// 事件名
/// 事件属性
public void TrackById(SensorsAnalyticsIdentity identity, String eventName, Dictionary properties)
使用示例:
//1.用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
//2.搜索商品
Dictionary searchRecord = new Dictionary();
searchRecord.Add("KeyWord", "XX手机");
sa.TrackById(identity, "SearchProduct", searchRecord);
//3.浏览商品
Dictionary lookRecord = new Dictionary();
lookRecord.Add("ProductName", "XX手机");
lookRecord.Add("ProductType", "智能手机");
lookRecord.Add("ShopName", "XX官方旗舰店");
sa.TrackById(identity, "ViewProduct", lookRecord);