# 自动采集
# 一、 开启自动采集事件
您可以通过调用 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
如果在 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
来指定特定自动采集事件的自定义属性。
注意:
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);