25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

103 lines
4.1 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. namespace UnityEngine.UDP.Editor.Analytics
  5. {
  6. public static class Common
  7. {
  8. // common keys
  9. private const string k_OrgId = "org_id";
  10. private const string k_EventType = "event_type";
  11. private const string k_ProjectId = "project_id";
  12. private const string k_ts = "ts";
  13. private const string k_UserId = "user_id";
  14. private const string k_EventTypeValue = "editor";
  15. private const string k_UnityVersion = "unity_version";
  16. private const string k_SdkVersion = "sdk_version";
  17. private const string k_DeviceId = "deviceID";
  18. // specific keys
  19. public const string k_AppName = "app_name";
  20. public const string k_AppSlug = "app_slug";
  21. public const string k_AppType = "app_type";
  22. public const string k_ClientId = "client_id";
  23. public const string k_Consumable = "consumable";
  24. public const string k_FailedReason = "failed_reason";
  25. public const string k_ItemId = "item_id";
  26. public const string k_ItemType = "item_type";
  27. public const string k_OwnerId = "owner_id";
  28. public const string k_OwnerType = "owner_type";
  29. public const string k_PriceList = "price_list";
  30. public const string k_ProductId = "product_id";
  31. public const string k_Revision = "revision";
  32. public const string k_Successful = "successful";
  33. private static string s_OrganizationId;
  34. private static string s_UserId;
  35. private static object s_UnityConnectInstance;
  36. internal static IDictionary<string, object> GetCommonParams()
  37. {
  38. Dictionary<string, object> dic = new Dictionary<string, object>
  39. {
  40. {k_ProjectId, Application.cloudProjectId},
  41. {k_EventType, k_EventTypeValue},
  42. {k_ts, GetCurrentMillisecondsInUTC()},
  43. {k_UnityVersion, Application.unityVersion},
  44. {k_SdkVersion, BuildConfig.VERSION},
  45. {k_OrgId, GetOrganizationId()},
  46. {k_UserId, GetUserId()},
  47. {k_DeviceId, SystemInfo.deviceUniqueIdentifier},
  48. };
  49. return dic;
  50. }
  51. // UnityEditor.Connect.UnityConnect.instance.GetOrganizationId()
  52. private static string GetOrganizationId()
  53. {
  54. if (string.IsNullOrEmpty(s_OrganizationId))
  55. {
  56. Type UnityConnectType = Utils.FindTypeByName("UnityEditor.Connect.UnityConnect");
  57. MethodInfo getOrgMethod = UnityConnectType.GetMethod("GetOrganizationId");
  58. s_OrganizationId = (string) getOrgMethod.Invoke(GetUnityConnectInstance(), null);
  59. }
  60. // Debug.Log("[Debug] Organization Id: " + s_OrganizationId);
  61. return s_OrganizationId;
  62. }
  63. // UnityEditor.Connect.UnityConnect.instance.GetUserId()
  64. private static string GetUserId()
  65. {
  66. if (string.IsNullOrEmpty(s_UserId))
  67. {
  68. Type UnityConnectType = Utils.FindTypeByName("UnityEditor.Connect.UnityConnect");
  69. MethodInfo getUserIdMethod = UnityConnectType.GetMethod("GetUserId");
  70. s_UserId = (string) getUserIdMethod.Invoke(GetUnityConnectInstance(), null);
  71. }
  72. // Debug.Log("[Debug]Debug User Id: " + s_UserId);
  73. return s_UserId;
  74. }
  75. private static object GetUnityConnectInstance()
  76. {
  77. if (s_UnityConnectInstance == null)
  78. {
  79. Type UnityConnectType = Utils.FindTypeByName("UnityEditor.Connect.UnityConnect");
  80. s_UnityConnectInstance = UnityConnectType.GetProperty("instance").GetValue(null, null);
  81. }
  82. // Debug.Log("[Debug] UnityConnect Instance is null?: " + (s_UnityConnectInstance == null));
  83. return s_UnityConnectInstance;
  84. }
  85. static UInt64 GetCurrentMillisecondsInUTC()
  86. {
  87. UInt64 timeStamp = (UInt64) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds);
  88. return timeStamp;
  89. }
  90. }
  91. }