下面,是针对一个典型的电商产品,在后台服务端,使用 C# SDK 向神策分析系统发送数据的样例。
特别需要注意的是,这个 Demo 只是描述SA的数据记录能力,并不是说使用者要完全照搬这些 Event 和 Property 的设计, 使用者还是需要结合自己产品的实际需求和具体的产品形态,来设计相应的 Event 和 Property。
简版用户关联
// LoggingConsumer
IConsumer consumer = new LoggingConsumer("D:/test/");
SensorsAnalytics sa = new SensorsAnalytics(consumer);
//设置公共属性,以后上传的每一个事件都附带该属性
Dictionary properties = new Dictionary();
// 服务器应用版本
properties.Add("ServerVersion", "1.2");
// 服务器机房地址
properties.Add("Location", "BeiJing");
// 设置事件公共属性
sa.RegisterSuperPropperties(properties);
// 1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
// 1.1 访问首页
// 前面有$开头的property字段,是SA提供给用户的预置字段
// 对于预置字段,已经确定好了字段类型和字段的显示名
Dictionary firstRecord = new Dictionary();
firstRecord.Add("$time", DateTime.Now);
firstRecord.Add("Channel", "baidu");
firstRecord.Add("$project", "abc");
firstRecord.Add("$token", "123");
sa.Track(cookieId, "track", firstRecord);
// 1.2 搜索商品
Dictionary searchRecord = new Dictionary();
searchRecord.Add("KeyWord", "XX手机");
sa.Track(cookieId, "SearchProduct", searchRecord);
// 1.3 浏览商品
Dictionary lookRecord = new Dictionary();
lookRecord.Add("ProductName", "XX手机");
lookRecord.Add("ProductType", "智能手机");
lookRecord.Add("ShopName", "XX官方旗舰店");
sa.Track(cookieId, "ViewProduct", lookRecord);
// 2. 用户注册登录之后,系统分配的注册ID
// 注册用户的真实 ID
String registerId = "0012345678";
// 用户注册/登录时,将用户注册 ID 与 匿名 ID 关联
sa.TrackSignUp(registerId, cookieId);
// 2.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);
// $is_login_id 属性判断 distinct_id 是否为登录 ID,如果是则设置为 true,否则为 false,默认为 false userRecord.Add("$is_login_id", true);
sa.ProfileSet(cookieId, userRecord);
//2.3 设置首次访问时间
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.ProfileSetOnce(cookieId, firstVisitRecord);
//2.4 追加属性
List newInterest = new List();
newInterest.Add("ball");
Dictionary appendRecord = new Dictionary();
appendRecord.Add("interest", newInterest);
sa.ProfileAppend(cookieId, appendRecord);
//2.5 给属性加值
Dictionary incrementRecord = new Dictionary();
incrementRecord.Add("age", 2);
sa.ProfileIncrement(cookieId, incrementRecord);
//2.6 移除用户属性
sa.ProfileUnset(cookieId, "age");
//物品纬度表上报
String itemId = "product001", itemType = "mobile";
Dictionary addRecord = new Dictionary();
addRecord.Add("color", "white");
addRecord.Add("price", 31.54);
sa.ItemSet(itemType, itemId, addRecord);
//删除物品纬度信息
sa.ItemDelete(itemType, itemId);
全域用户关联
SDK 版本需要 >= v2.1.0
// LoggingConsumer
IConsumer consumer = new LoggingConsumer("D:/test/");
SensorsAnalytics sa = new SensorsAnalytics(consumer);
String distinctId = "ABCDEF123456789";
//设置公共属性,以后上传的每一个事件都附带该属性
Dictionary properties = new Dictionary();
// 服务器应用版本
properties.Add("ServerVersion", "1.2");
// 服务器机房地址
properties.Add("Location", "BeiJing");
// 设置事件公共属性
sa.RegisterSuperPropperties(properties);
// 1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
// 1.1 访问首页
// 前面有$开头的property字段,是SA提供给用户的预置字段
// 对于预置字段,已经确定好了字段类型和字段的显示名
Dictionary firstRecord = new Dictionary();
firstRecord.Add("$time", DateTime.Now);
firstRecord.Add("Channel", "baidu");
firstRecord.Add("$project", "abc");
firstRecord.Add("$token", "123");
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
sa.TrackById(identity, "track", firstRecord);
// 1.2 搜索商品
Dictionary searchRecord = new Dictionary();
searchRecord.Add("KeyWord", "XX手机");
sa.TrackById(identity, "SearchProduct", searchRecord);
// 1.3 浏览商品
Dictionary lookRecord = new Dictionary();
lookRecord.Add("ProductName", "XX手机");
lookRecord.Add("ProductType", "智能手机");
lookRecord.Add("ShopName", "XX官方旗舰店");
sa.TrackById(identity, "ViewProduct", lookRecord);
// 2. 用户注册登录之后,系统分配的注册ID
// 匿名 ID 由前端传过来
String anonymousId = "9771C579-71F0-4650-8EE8-8999FA717761";
// 注册用户的真实 ID
String registerId = "0012345678";
// 用户注册/登录时,将用户注册 ID 与 匿名 ID 关联
sa.TrackSignUp(registerId, anonymousId);
// 2.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);
//2.3 设置首次访问时间
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);
//2.4 追加属性
List newInterest = new List();
newInterest.Add("ball");
Dictionary appendRecord = new Dictionary();
appendRecord.Add("interest", newInterest);
sa.ProfileAppendById(identity, appendRecord);
//2.5 给属性加值
Dictionary incrementRecord = new Dictionary();
incrementRecord.Add("age", 2);
sa.ProfileIncrementById(identity, incrementRecord);
//2.6 移除用户属性
sa.ProfileUnsetById(identity, "age");
//物品纬度表上报
String itemId = "product001", itemType = "mobile";
Dictionary addRecord = new Dictionary();
addRecord.Add("color", "white");
addRecord.Add("price", 31.54);
sa.ItemSet(itemType, itemId, addRecord);
//删除物品纬度信息
sa.ItemDelete(itemType, itemId);
// LoggingConsumer
IConsumer consumer = new LoggingConsumer("D:/test/");
SensorsAnalytics sa = new SensorsAnalytics(consumer);
//设置公共属性,以后上传的每一个事件都附带该属性
Dictionary properties = new Dictionary();
// 服务器应用版本
properties.Add("ServerVersion", "1.2");
// 服务器机房地址
properties.Add("Location", "BeiJing");
// 设置事件公共属性
sa.RegisterSuperPropperties(properties);
// 1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
// 1.1 访问首页
// 前面有$开头的property字段,是SA提供给用户的预置字段
// 对于预置字段,已经确定好了字段类型和字段的显示名
Dictionary firstRecord = new Dictionary();
firstRecord.Add("$time", DateTime.Now);
firstRecord.Add("Channel", "baidu");
firstRecord.Add("$project", "abc");
firstRecord.Add("$token", "123");
sa.Track(cookieId, "track", firstRecord);
// 1.2 搜索商品
Dictionary searchRecord = new Dictionary();
searchRecord.Add("KeyWord", "XX手机");
sa.Track(cookieId, "SearchProduct", searchRecord);
// 1.3 浏览商品
Dictionary lookRecord = new Dictionary();
lookRecord.Add("ProductName", "XX手机");
lookRecord.Add("ProductType", "智能手机");
lookRecord.Add("ShopName", "XX官方旗舰店");
sa.Track(cookieId, "ViewProduct", lookRecord);
// 2. 用户注册登录之后,系统分配的注册ID
// 注册用户的真实 ID
String registerId = "0012345678";
// 用户注册/登录时,将用户注册 ID 与 匿名 ID 关联
sa.TrackSignUp(registerId, cookieId);
// 2.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);
// $is_login_id 属性判断 distinct_id 是否为登录 ID,如果是则设置为 true,否则为 false,默认为 false userRecord.Add("$is_login_id", true);
sa.ProfileSet(cookieId, userRecord);
//2.3 设置首次访问时间
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.ProfileSetOnce(cookieId, firstVisitRecord);
//2.4 追加属性
List newInterest = new List();
newInterest.Add("ball");
Dictionary appendRecord = new Dictionary();
appendRecord.Add("interest", newInterest);
sa.ProfileAppend(cookieId, appendRecord);
//2.5 给属性加值
Dictionary incrementRecord = new Dictionary();
incrementRecord.Add("age", 2);
sa.ProfileIncrement(cookieId, incrementRecord);
//2.6 移除用户属性
sa.ProfileUnset(cookieId, "age");
//物品纬度表上报
String itemId = "product001", itemType = "mobile";
Dictionary addRecord = new Dictionary();
addRecord.Add("color", "white");
addRecord.Add("price", 31.54);
sa.ItemSet(itemType, itemId, addRecord);
//删除物品纬度信息
sa.ItemDelete(itemType, itemId);
SDK 版本需要 >= v2.1.0
// LoggingConsumer
IConsumer consumer = new LoggingConsumer("D:/test/");
SensorsAnalytics sa = new SensorsAnalytics(consumer);
String distinctId = "ABCDEF123456789";
//设置公共属性,以后上传的每一个事件都附带该属性
Dictionary properties = new Dictionary();
// 服务器应用版本
properties.Add("ServerVersion", "1.2");
// 服务器机房地址
properties.Add("Location", "BeiJing");
// 设置事件公共属性
sa.RegisterSuperPropperties(properties);
// 1. 用户匿名访问网站,cookieId 默认神策生成分配
String cookieId = "ABCDEF123456789";
// 1.1 访问首页
// 前面有$开头的property字段,是SA提供给用户的预置字段
// 对于预置字段,已经确定好了字段类型和字段的显示名
Dictionary firstRecord = new Dictionary();
firstRecord.Add("$time", DateTime.Now);
firstRecord.Add("Channel", "baidu");
firstRecord.Add("$project", "abc");
firstRecord.Add("$token", "123");
SensorsAnalyticsIdentity identity = new SensorsAnalyticsIdentity("cookieId", cookieId);
sa.TrackById(identity, "track", firstRecord);
// 1.2 搜索商品
Dictionary searchRecord = new Dictionary();
searchRecord.Add("KeyWord", "XX手机");
sa.TrackById(identity, "SearchProduct", searchRecord);
// 1.3 浏览商品
Dictionary lookRecord = new Dictionary();
lookRecord.Add("ProductName", "XX手机");
lookRecord.Add("ProductType", "智能手机");
lookRecord.Add("ShopName", "XX官方旗舰店");
sa.TrackById(identity, "ViewProduct", lookRecord);
// 2. 用户注册登录之后,系统分配的注册ID
// 匿名 ID 由前端传过来
String anonymousId = "9771C579-71F0-4650-8EE8-8999FA717761";
// 注册用户的真实 ID
String registerId = "0012345678";
// 用户注册/登录时,将用户注册 ID 与 匿名 ID 关联
sa.TrackSignUp(registerId, anonymousId);
// 2.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);
//2.3 设置首次访问时间
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);
//2.4 追加属性
List newInterest = new List();
newInterest.Add("ball");
Dictionary appendRecord = new Dictionary();
appendRecord.Add("interest", newInterest);
sa.ProfileAppendById(identity, appendRecord);
//2.5 给属性加值
Dictionary incrementRecord = new Dictionary();
incrementRecord.Add("age", 2);
sa.ProfileIncrementById(identity, incrementRecord);
//2.6 移除用户属性
sa.ProfileUnsetById(identity, "age");
//物品纬度表上报
String itemId = "product001", itemType = "mobile";
Dictionary addRecord = new Dictionary();
addRecord.Add("color", "white");
addRecord.Add("price", 31.54);
sa.ItemSet(itemType, itemId, addRecord);
//删除物品纬度信息
sa.ItemDelete(itemType, itemId);