menu
Is this helpful?

# 自动采集

# 一、 开启自动采集事件

您可以通过调用 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 表示本次启动是否是重新启动。
  • AppEnd: 当游戏进入后台的时候会触发上报 ta_app_end, 预置属性 #duration 字段表示此次游戏在前台的持续时长,单位为秒。
  • AppCrash: 当出现未捕获异常的时候会触发上报 ta_app_crash, 目前 Android 平台会处理虚拟机的未捕获异常。iOS 平台会处理 Unix 信号异常和 NSException 异常。
  • AppInstall: 当应用首次安装后打开时触发上报 ta_app_install. 不区分是否是卸载重装。该时间只在安装后上报一次,后续更新不会再上报。
  • AppSceneLoad: 当游戏场景(Scene)加载的时候触发上报 ta_scene_loaded
  • AppSceneUnload: 当游戏场景(Scene)卸载的时候触发上报 ta_scene_unloaded

您可以通过传入 TDAutoTrackEventType.All 来开启目前支持的所有自动采集事件,也可以根据您项目的需求开启部分自动采集事件。

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

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

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

关于 AppCrash 如果在 iOSAndroid 平台上只想采集 Objective-CJava 异常,不采集 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 来指定特定自动采集事件的自定义属性。

注意: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 开始,支持设置自动采集事件回调,以实时设置自定义属性,或在对应事件触发时机执行自定义代码。设置自动采集事件回调,需要先新建类并实现 <code>TDAutoTrackEventHandler</code> 接口,复写 <code>public Dictionary<string, object> </code><code>GetAutoTrackEventProperties</code><code>(int type, Dictionary<string, object>properties)</code> 方法,该方法的返回值即是需要设置的动采集事件属性。再调用 <code>EnableAutoTrack</code> 传入自动采集事件回调对象,如下:
// 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);