using System; using System.Collections.Generic; using System.Reflection; namespace UnityEngine.UDP.Editor.Analytics { public static class Common { // common keys private const string k_OrgId = "org_id"; private const string k_EventType = "event_type"; private const string k_ProjectId = "project_id"; private const string k_ts = "ts"; private const string k_UserId = "user_id"; private const string k_EventTypeValue = "editor"; private const string k_UnityVersion = "unity_version"; private const string k_SdkVersion = "sdk_version"; private const string k_DeviceId = "deviceID"; // specific keys public const string k_AppName = "app_name"; public const string k_AppSlug = "app_slug"; public const string k_AppType = "app_type"; public const string k_ClientId = "client_id"; public const string k_Consumable = "consumable"; public const string k_FailedReason = "failed_reason"; public const string k_ItemId = "item_id"; public const string k_ItemType = "item_type"; public const string k_OwnerId = "owner_id"; public const string k_OwnerType = "owner_type"; public const string k_PriceList = "price_list"; public const string k_ProductId = "product_id"; public const string k_Revision = "revision"; public const string k_Successful = "successful"; private static string s_OrganizationId; private static string s_UserId; private static object s_UnityConnectInstance; internal static IDictionary GetCommonParams() { Dictionary dic = new Dictionary { {k_ProjectId, Application.cloudProjectId}, {k_EventType, k_EventTypeValue}, {k_ts, GetCurrentMillisecondsInUTC()}, {k_UnityVersion, Application.unityVersion}, {k_SdkVersion, BuildConfig.VERSION}, {k_OrgId, GetOrganizationId()}, {k_UserId, GetUserId()}, {k_DeviceId, SystemInfo.deviceUniqueIdentifier}, }; return dic; } // UnityEditor.Connect.UnityConnect.instance.GetOrganizationId() private static string GetOrganizationId() { if (string.IsNullOrEmpty(s_OrganizationId)) { Type UnityConnectType = Utils.FindTypeByName("UnityEditor.Connect.UnityConnect"); MethodInfo getOrgMethod = UnityConnectType.GetMethod("GetOrganizationId"); s_OrganizationId = (string) getOrgMethod.Invoke(GetUnityConnectInstance(), null); } // Debug.Log("[Debug] Organization Id: " + s_OrganizationId); return s_OrganizationId; } // UnityEditor.Connect.UnityConnect.instance.GetUserId() private static string GetUserId() { if (string.IsNullOrEmpty(s_UserId)) { Type UnityConnectType = Utils.FindTypeByName("UnityEditor.Connect.UnityConnect"); MethodInfo getUserIdMethod = UnityConnectType.GetMethod("GetUserId"); s_UserId = (string) getUserIdMethod.Invoke(GetUnityConnectInstance(), null); } // Debug.Log("[Debug]Debug User Id: " + s_UserId); return s_UserId; } private static object GetUnityConnectInstance() { if (s_UnityConnectInstance == null) { Type UnityConnectType = Utils.FindTypeByName("UnityEditor.Connect.UnityConnect"); s_UnityConnectInstance = UnityConnectType.GetProperty("instance").GetValue(null, null); } // Debug.Log("[Debug] UnityConnect Instance is null?: " + (s_UnityConnectInstance == null)); return s_UnityConnectInstance; } static UInt64 GetCurrentMillisecondsInUTC() { UInt64 timeStamp = (UInt64) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds); return timeStamp; } } }