Unity SDK
目前僅相容 Android、iOS 平台上執行的 Unity App
版本兼容
Unity Editor 5.5.5 及以上版本
整合 SDK
- 下載 sensorsdata_unity_sdk_v1.0.0_4.2.4_2.1.4.unitypackage 檔案
- 將上述檔案透過 Assets → Import Package → Custom Package 增加到專案中
- 將 SensorsAnalytics 目錄下的 SensorsAnalytics.prefab Unity拖曳到需要加載的位置
- 設定 SDK
Server URL :數據接收網址
Enable Log :是否開啟 log,開啟後,埋點事件觸發時,控制台會輸出相對 log 資訊
使用 SDK
設定事件公共屬性
對於所有事件都需要增加的屬性,初始化 SDK 後,可以透過 RegisterSuperProperties 將屬性註冊為公共屬性:
using SensorsAnalytics;
try
{
Dictionary<string, object> properties = new Dictionary<string, object>();
// 將應用名稱作為事件公共屬性,後續所有 Track() 追蹤的事件都會自動帶上 "AppName" 屬性
properties.Add("AppName", "Dota 傳奇");
SensorsDataAPI.RegisterSuperProperties(properties);
}
catch (Exception ex)
{
//handle exception
}
用戶登入
當用戶註冊成功或登入成功時,需要呼叫 SDK 的 Login 方法:
using SensorsAnalytics;
try
{
SensorsDataAPI.Login("登入 ID");
}
catch (Exception ex)
{
//handle exception
}
程式碼埋點追蹤事件
可以透過 Track 方法追蹤用戶行為識見,並為事件增加自定義屬性:
using SensorsDataAnalytics;
try
{
Dictionary<string, object> properties = new Dictionary<string, object>();
// 設定商品 ID
properties.Add("ProductID", 123456);
// 設定商品類別
properties.Add("ProductCatalog", "Laptop Computer");
// 觸發 BuyProduct 事件
SensorsDataAPI.Track("BuyProduct", properties);
}
catch (Exception ex)
{
//handle exception
}
設定用戶屬性
ProfileSet 方法可以設定用戶屬性,同一個 key 被多次設定時,value 的值會進行覆蓋替換:
using SensorsAnalytics;
try
{
Dictionary<string, object> properties = new Dictionary<string, object>();
// 設定用戶性別屬性 "Sex" 為 "Male"
properties.Add("Sex", "Male");
// 設定用戶年齡屬性 "Age" 為 18
properties.Add("Age", 18");
// 設定用戶屬性
SensorsDataAPI.ProfileSet(properties);
}
catch (Exception ex)
{
//handle exception
}
事件時長
可以透過計時器統計事件的持續時間。首先,TrackTimerStart("EventName"),該方法並不會真正傳送事件;在事件結束時,呼叫 TrackTimerEnd("EventName", properties),SDK 會觸發 "Event" 事件,並自動將事件持續時間記錄在事件屬性 "$event_duration" 中。在事件開始後你可以使用 TrackTimerPause("EventName") 來暫停事件計時,然後透過 TrackTimerResume("EventName") 來恢復事件計時。例如記錄用戶瀏覽商品頁面的時間:
using SensorsAnalytics;
try
{
// 進入商品頁面
// 呼叫 TrackTimerStart("ViewProduct") 標記事件啟動時間
SensorsDataAPI.TrackTimerStart("ViewProduct");
// ... 用戶瀏覽商品
// 離開商品頁
Dictionary<string, object> properties = new Dictionary<string, object>();
// 在屬性中記錄商品 ID
properties.Add("country", "中國");
// 計時結束,觸發 ViewProduct 事件
SensorsDataAPI.TrackTimerEnd("ViewProduct", properties);
}
catch (Exception ex)
{
//handle exception
}
同名事件交叉的時長統計
預設情況下,時長的統計以事件名作為標識,相同的事件名會自動匹配 start-end,如果兩個同名事件在時間上有交叉部分,會造成錯誤匹配。開發者需要保存 trackTimerStart() 的回傳值,以便後續針對性地進行暫停、恢復或停止。
using SensorsAnalytics;
var result = SensorsDataAPI.TrackTimerStart("BuyGoods");
...
SensorsDataAPI.TrackTimerEnd("BuyGoods" or result);
// 開始第一個事件計時
var timer1 = SensorsDataAPI.TrackTimerStart("testTimer");
// 開始第二個事件計時
var timer2 = SensorsDataAPI.TrackTimerStart("testTimer");
//如果需要暫停第一個事件計時
SensorsDataAPI.TrackTimerPause(timer1);
//如果需要恢復第一個事件計時
SensorsDataAPI.TrackTimerResume(timer1);
// 結束第一個事件計時
SensorsDataAPI.TrackTimerEnd(timer1);
// 結束第二個事件計時
SensorsDataAPI.TrackTimerEnd(timer2);
其他 API
其他 API 可以在 Sample 工程中找到使用方式,也可以直接查看 SensorsDataAPI.cs 檔案中的方法描述。