菜单

C# SDK Demo

下面,是针对一个典型的电商产品,在后台服务端,使用 C# SDK 向神策分析系统发送数据的样例。

特别需要注意的是,这个 Demo 只是描述 SA 的数据记录能力,并不是说使用者要完全照搬这些 Event 和 Property 的设计,使用者还是需要结合自己产品的实际需求和具体的产品形态,来设计相应的 EventProperty

简版用户关联

// LoggingConsumer IConsumer consumer = new LoggingConsumer("D:/test/"); SensorsAnalytics sa = new SensorsAnalytics(consumer); // 设置公共属性, 以后上传的每一个事件都附带该属性 Dictionary<string, Object> properties = new Dictionary<string, object>(); // 服务器应用版本 properties.Add("ServerVersion", "1.2"); // 服务器机房地址 properties.Add("Location", "BeiJing"); // 设置事件公共属性 sa.RegisterSuperPropperties(properties); // 1. 用户匿名访问网站,cookieId 默认神策生成分配 String cookieId = "ABCDEF123456789"; // 1.1 访问首页 // 前面有 $ 开头的 property 字段,是 SA 提供给用户的预置字段 // 对于预置字段,已经确定好了字段类型和字段的显示名 Dictionary<string, Object> firstRecord = new Dictionary<string, object>(); 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<string, Object> searchRecord = new Dictionary<string, object>(); searchRecord.Add("KeyWord", "XX手机"); sa.Track(cookieId, "SearchProduct", searchRecord); // 1.3 浏览商品 Dictionary<string, Object> lookRecord = new Dictionary<string, object>(); 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<string, Object> userRecord = new Dictionary<string, object>(); 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<string, Object> firstVisitRecord = new Dictionary<string, object>(); 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<String> newInterest = new List<String>(); newInterest.Add("ball"); Dictionary<string, Object> appendRecord = new Dictionary<string, object>(); appendRecord.Add("interest", newInterest); sa.ProfileAppend(cookieId, appendRecord); // 2.5 给属性加值 Dictionary<string, Object> incrementRecord = new Dictionary<string, object>(); incrementRecord.Add("age", 2); sa.ProfileIncrement(cookieId, incrementRecord); // 2.6 移除用户属性 sa.ProfileUnset(cookieId, "age"); // 物品纬度表上报 String itemId = "product001", itemType = "mobile"; Dictionary<string, Object> addRecord = new Dictionary<string, object>(); 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<string, Object> properties = new Dictionary<string, object>(); // 服务器应用版本 properties.Add("ServerVersion", "1.2"); // 服务器机房地址 properties.Add("Location", "BeiJing"); // 设置事件公共属性 sa.RegisterSuperPropperties(properties); // 1. 用户匿名访问网站,cookieId 默认神策生成分配 String cookieId = "ABCDEF123456789"; // 1.1 访问首页 // 前面有 $ 开头的 property 字段,是 SA 提供给用户的预置字段 // 对于预置字段,已经确定好了字段类型和字段的显示名 Dictionary<string, Object> firstRecord = new Dictionary<string, object>(); 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<string, Object> searchRecord = new Dictionary<string, object>(); searchRecord.Add("KeyWord", "XX手机"); sa.TrackById(identity, "SearchProduct", searchRecord); // 1.3 浏览商品 Dictionary<string, Object> lookRecord = new Dictionary<string, object>(); 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<string, Object> userRecord = new Dictionary<string, object>(); 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<string, Object> firstVisitRecord = new Dictionary<string, object>(); 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<String> newInterest = new List<String>(); newInterest.Add("ball"); Dictionary<string, Object> appendRecord = new Dictionary<string, object>(); appendRecord.Add("interest", newInterest); sa.ProfileAppendById(identity, appendRecord); // 2.5 给属性加值 Dictionary<string, Object> incrementRecord = new Dictionary<string, object>(); incrementRecord.Add("age", 2); sa.ProfileIncrementById(identity, incrementRecord); // 2.6 移除用户属性 sa.ProfileUnsetById(identity, "age"); // 物品纬度表上报 String itemId = "product001", itemType = "mobile"; Dictionary<string, Object> addRecord = new Dictionary<string, object>(); addRecord.Add("color", "white"); addRecord.Add("price", 31.54); sa.ItemSet(itemType, itemId, addRecord); // 删除物品纬度信息 sa.ItemDelete(itemType, itemId);
最近修改: 2025-03-17