目前僅相容 Android、iOS 平台上執行的 Unity App

版本兼容

Unity Editor 5.5.5 及以上版本

整合 SDK

  1. 下載 sensorsdata_unity_sdk_v1.0.0_4.2.4_2.1.4.unitypackage 檔案
  2. 將上述檔案透過 Assets → Import Package → Custom Package 增加到專案中
  3. 將 SensorsAnalytics 目錄下的 SensorsAnalytics.prefab Unity拖曳到需要加載的位置
  4. 設定 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
}
C#

用戶登入

當用戶註冊成功或登入成功時,需要呼叫 SDK 的 Login 方法:

using SensorsAnalytics;

try
{
	SensorsDataAPI.Login("登入 ID");
}
catch (Exception ex)
{
	//handle exception
}
C#

程式碼埋點追蹤事件

可以透過 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
}
C#

設定用戶屬性

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
}
C#

事件時長

可以透過計時器統計事件的持續時間。首先,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
}
C#

同名事件交叉的時長統計

預設情況下,時長的統計以事件名作為標識,相同的事件名會自動匹配 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);
C#

其他 API

其他 API 可以在 Sample 工程中找到使用方式,也可以直接查看 SensorsDataAPI.cs 檔案中的方法描述。