---
code: unity_sdk_autotrack
name: "自动采集"
wikiToken: CjFJwVNa0ih6skkZHBmc0edmnCc
parentWikiToken: BMYXwREPHidgIokPXd3cibSdnqe
updateTime: 1755763733000
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v5.0&lan=zh-CN&code=unity_sdk_autotrack
---
# 自动采集

### 一、 开启自动采集事件

<!-- unsupported block: 19 -->

Harmony平台该功能暂时关闭

您可以通过调用 `EnableAutoTrack` 传入 `TDAutoTrackEventType` 来开启指定事件的自动采集功能。

```
public enum TDAutoTrackEventType
{
    None = 0,
    AppStart = 1 << 0,
    AppEnd = 1 << 1,
    AppCrash = 1 << 4,
    AppInstall = 1 << 5,
    AppSceneLoad = 1 << 6,
    AppSceneUnload = 1 << 7,
    All = AppStart | AppEnd | AppInstall | AppCrash | AppSceneLoad | AppSceneUnload
}
```

对于自动采集事件的说明如下：

- **AppStart**: 当游戏进入前台的时候会触发上报 `ta_app_start`, 预置属性 `#resume_from_background` 表示本次启动是否是重新启动。
<!-- unsupported block: 19 -->

注:微信小游戏的AppStart事件变为show事件，事件名为: *`ta_mg_show`*，增加属性*`start_reason`*

- **AppEnd**: 当游戏进入后台的时候会触发上报 `ta_app_end`, 预置属性 `#duration` 字段表示此次游戏在前台的持续时长，单位为秒。
<!-- unsupported block: 19 -->

注:微信小游戏的AppEnd事件变为hide事件，事件名为: *`ta_mg_hide`*

- **AppCrash**: 当出现未捕获异常的时候会触发上报 `ta_app_crash`, 目前 Android 平台会处理虚拟机的未捕获异常。iOS 平台会处理 Unix 信号异常和 NSException 异常。
- **AppInstall**: 当应用首次安装后打开时触发上报 `ta_app_install`. 不区分是否是卸载重装。该时间只在安装后上报一次，后续更新不会再上报。
<!-- unsupported block: 19 -->

注:微信小游戏的AppInstall事件变为launch事件，事件名为: *`ta_mg_launch`*，增加属性*`start_reason`*

- **AppSceneLoad**: 当游戏场景（Scene）加载的时候触发上报 `ta_scene_loaded`
- **AppSceneUnload**: 当游戏场景（Scene）卸载的时候触发上报 `ta_scene_unloaded`
您可以通过传入 `TDAutoTrackEventType.All` 来开启目前支持的所有自动采集事件，也可以根据您项目的需求开启部分自动采集事件。

```
// 开启全部自动采集事件
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.All);

// 开启启动和关闭事件的自动采集
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.AppStart | TDAutoTrackEventType.AppEnd);
```

<!-- unsupported block: 34 -->

注意：如果您需要设置自定义访客 ID，或者公共事件属性，需要在打开自动采集事件之前完成。自动采集事件目前不支持动态公共属性。

关于 `AppCrash` 如果在 `iOS` 和 `Android` 平台上只想采集 `Objective-C` 和 `Java` 异常，不采集 `C#` 异常，在 v2.3.1 及以上版本，可以通过在 `Resources` 目录添加 `ta_public_config.xml` 来配置开关，如下：

```
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- ThinkingAnalytics disable C# Exception -->
    <bool name="DisableCSharpException">true</bool>
</resources>
```

### 二、 设置自动采集事件的自定义属性

自 v2.2.4 开始，您可以通过调用 `EnableAutoTrack` 开启自动采集的同时，传入需要采集的自定义属性。

```
// 开启自动采集事件，并设置自定属性
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.All, new Dictionary<string, object>() {
    {"custom_key", "custom_value"}
});
```

也可以调用 `SetAutoTrackProperties` 来指定特定自动采集事件的自定义属性。

<!-- unsupported block: 34 -->

注意：`SetAutoTrackProperties` 不会开启自动采集事件的采集，需要配`EnableAutoTrack` 方法使用。

```
// 设置指单个自动采集事件的自定义属性
TDAnalytics.SetAutoTrackProperties(TDAutoTrackEventType.AppStart, new Dictionary<string, object>() 
{
    {"start_key", "start_value"}
});

// 设置指多个自动采集事件的自定义属性
TDAnalytics.SetAutoTrackProperties(TDAutoTrackEventType.AppInstall | TDAutoTrackEventType.AppStart, new Dictionary<string, object>() 
{
    {"install_crash_key", "install_crash_value"}
});

// 开启全部自动采集事件
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.All);
```

### 三、 设置自动采集事件回调

    从 v2.4.0 开始，支持设置自动采集事件回调，以实时设置自定义属性，或在对应事件触发时机执行自定义代码。设置自动采集事件回调，需要先新建类并实现 `TDAutoTrackEventHandler` 接口，复写 `public Dictionary<string, object> GetAutoTrackEventProperties(int type, Dictionary<string, object>properties)` 方法，该方法的返回值即是需要设置的动采集事件属性。再调用 `EnableAutoTrack` 传入自动采集事件回调对象，如下：

```
// 1.自动采集事件回调实现
public class AutoTrackECB : TDAutoTrackEventHandler
{
    public Dictionary<string, object> GetAutoTrackEventProperties(int type, Dictionary<string, object>properties)
    {
        return new Dictionary<string, object>() 
        {
            {"AutoTrackEventProperty", DateTime.Today}
        };
    }
}
// 2.开启自动采集，并设置事件回调
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.All, new AutoTrackECB());
```

### 四、 开启场景自动采集事件

从 v2.4.1 开始，支持自动采集场景的加载和卸载事件。

通过注册场景加载、卸载的委托事件，来开启场景的自动采集事件。

建议在 `MonoBehaviour` 脚本的 `OnEnable` 方法中调用。

```
    private void OnEnable()
    {
        // 监听场景加载、卸载事件
        SceneManager.sceneLoaded += TDAnalytics.OnSceneLoaded;
        SceneManager.sceneUnloaded += TDAnalytics.OnSceneUnloaded;
    }
```

从 v2.5.1 开始，可以通过调用 `EnableAutoTrack` 方法开启场景自动采集事件

```
// 开启全部自动采集事件
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.All);

// 开启启动和关闭事件的自动采集
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.AppSceneLoad | TDAutoTrackEventType.AppSceneUnload);
```
