菜单

全域用户关联 API(C#)

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);
上一个
基础 API 介绍(C#)
下一个
简易用户关联 API(C#)
最近修改: 2024-12-27