#if XRI_ANALYTICS_DEBUGGING_ENABLED
using UnityEngine;
#endif
#if ENABLE_CLOUD_SERVICES_ANALYTICS || UNITY_2023_2_OR_NEWER
namespace UnityEditor.XR.Interaction.Toolkit.Analytics
{
///
/// The entry point class to send XR Interaction Toolkit analytics data.
///
[InitializeOnLoad]
static class XRIAnalytics
{
///
/// Vendor key name.
///
public const string VendorKey = "unity.xrinteractiontoolkit";
///
/// Default hourly limit for an event.
///
public const int DefaultMaxEventsPerHour = 1000; // Same default value as AnalyticInfoAttribute
///
/// Default maximum number of items in an event.
///
public const int DefaultMaxItems = 1000; // Same default value as AnalyticInfoAttribute
#if UNITY_2023_2_OR_NEWER
public const string PackageName = "com.unity.xr.interaction.toolkit";
public static readonly string PackageVersion = PackageManager.PackageInfo.FindForPackageName(PackageName).version;
#endif
static XRIPlayModeEvent playModeEvent { get; } = new XRIPlayModeEvent();
static XRIBuildEvent buildEvent { get; } = new XRIBuildEvent();
static XRIAnalytics()
{
#if !UNITY_2023_2_OR_NEWER
playModeEvent.Register();
buildEvent.Register();
#endif
}
///
/// Send the given parameter as payload to the analytics server.
///
/// The parameter object within the event.
/// Returns whenever the event was successfully sent. Returns if this event was not registered yet.
public static bool Send(XRIPlayModeEvent.Payload payload)
{
if (!EditorAnalytics.enabled)
return false;
#if UNITY_2023_2_OR_NEWER
// Ensure package name and version are included in the payload
payload.package = PackageName;
payload.package_ver = PackageVersion;
#endif
#if XRI_ANALYTICS_DEBUGGING_ENABLED
Debug.Log($"{payload.GetType().FullName}\n{JsonUtility.ToJson(payload, true)}");
return true;
#else
return playModeEvent.Send(payload);
#endif
}
///
/// Send the given parameter as payload to the analytics server.
///
/// The parameter object within the event.
/// Returns whenever the event was successfully sent. Returns if this event was not registered yet.
public static bool Send(XRIBuildEvent.Payload payload)
{
if (!EditorAnalytics.enabled)
return false;
#if UNITY_2023_2_OR_NEWER
// Ensure package name and version are included in the payload
payload.package = PackageName;
payload.package_ver = PackageVersion;
#endif
#if XRI_ANALYTICS_DEBUGGING_ENABLED
Debug.Log($"{payload.GetType().FullName}\n{JsonUtility.ToJson(payload, true)}");
return true;
#else
return buildEvent.Send(payload);
#endif
}
}
}
#endif