You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

180 lines
5.9 KiB

  1. using System;
  2. using System.Reflection;
  3. using UnityEngine.Networking;
  4. using UnityEngine.UDP.Common;
  5. namespace UnityEngine.UDP.Editor.Analytics
  6. {
  7. public static class EditorAnalyticsApi
  8. {
  9. public const string k_API_URL = "/udp/api/cdp/event";
  10. public const string k_ENDPOINT = BuildConfig.CONNECT_ENDPOINT;
  11. public static string orgIdCache;
  12. public static string userIdCache;
  13. #region Event Names
  14. internal const string k_ImportSDKEventName = "editorImportSDK";
  15. internal const string k_ClientCreateEventName = "editorClientCreate";
  16. internal const string k_ClientUpdateEventName = "editorClientUpdate";
  17. internal const string k_IapCreateEventName = "editorIapCreate";
  18. internal const string k_IapUpdateEventName = "editorIapUpdate";
  19. internal const string k_ProjectBuildEventName = "editorProjectBuild";
  20. internal const string k_AppCreateEventName = "editorAppCreate";
  21. internal const string k_AppUpdateEventName = "editorAppUpdate";
  22. internal const string k_ProjectOpenEventName = "editorProjectOpen";
  23. #endregion
  24. public static UnityWebRequest ImportSdk()
  25. {
  26. var parameters = Common.GetCommonParams();
  27. EventRequest request = new EventRequest
  28. {
  29. type = k_ImportSDKEventName,
  30. msg = MiniJson.JsonEncode(parameters),
  31. };
  32. return AssembleAndSendWebRequest(request);
  33. }
  34. public static UnityWebRequest ProjectOpened()
  35. {
  36. var parameters = Common.GetCommonParams();
  37. EventRequest request = new EventRequest
  38. {
  39. type = k_ProjectOpenEventName,
  40. msg = MiniJson.JsonEncode(parameters),
  41. };
  42. return AssembleAndSendWebRequest(request);
  43. }
  44. // clientCreate or clientUpdate
  45. public static UnityWebRequest ClientEvent(string eventName, string clientId, string failedReason)
  46. {
  47. var parameters = Common.GetCommonParams();
  48. bool successful = failedReason == null;
  49. parameters.Add(Common.k_Successful, successful);
  50. if (successful)
  51. {
  52. parameters.Add(Common.k_ClientId, clientId);
  53. }
  54. else
  55. {
  56. parameters.Add(Common.k_FailedReason, failedReason);
  57. }
  58. EventRequest request = new EventRequest
  59. {
  60. type = eventName,
  61. msg = MiniJson.JsonEncode(parameters),
  62. };
  63. return AssembleAndSendWebRequest(request);
  64. }
  65. // iapCreate && iapUpdate
  66. public static UnityWebRequest IapEvent(string eventName, string clientId, IapItem item, string failedReason)
  67. {
  68. var parameters = Common.GetCommonParams();
  69. parameters.Add(Common.k_ClientId, clientId);
  70. if (failedReason != null)
  71. {
  72. parameters.Add(Common.k_FailedReason, failedReason);
  73. }
  74. bool successful = failedReason == null;
  75. parameters.Add(Common.k_Successful, successful);
  76. if (successful)
  77. {
  78. parameters.Add(Common.k_Consumable, item.consumable);
  79. parameters.Add(Common.k_ItemId, item.id);
  80. parameters.Add(Common.k_ItemType, "inapp");
  81. var priceList = item.priceSets.PurchaseFee.priceMap.DEFAULT;
  82. parameters.Add(Common.k_PriceList, priceList);
  83. parameters.Add(Common.k_ProductId, item.slug);
  84. parameters.Add(Common.k_OwnerId, item.ownerId);
  85. parameters.Add(Common.k_OwnerType, item.ownerType);
  86. }
  87. EventRequest request = new EventRequest
  88. {
  89. type = eventName,
  90. msg = MiniJson.JsonEncode(parameters),
  91. };
  92. return AssembleAndSendWebRequest(request);
  93. }
  94. public static UnityWebRequest AppEvent(string eventName, string clientId, AppItemResponse appItem,
  95. string failedReason)
  96. {
  97. var parameters = Common.GetCommonParams();
  98. bool successful = failedReason == null;
  99. parameters.Add(Common.k_Successful, successful);
  100. if (!successful)
  101. {
  102. parameters.Add(Common.k_FailedReason, failedReason);
  103. }
  104. else
  105. {
  106. parameters.Add(Common.k_ClientId, appItem.clientId);
  107. parameters.Add(Common.k_Revision, appItem.revision);
  108. parameters.Add(Common.k_AppName, appItem.name);
  109. parameters.Add(Common.k_AppSlug, appItem.slug);
  110. parameters.Add(Common.k_AppType, appItem.type);
  111. parameters.Add(Common.k_OwnerId, appItem.ownerId);
  112. parameters.Add(Common.k_OwnerType, appItem.ownerType);
  113. }
  114. EventRequest request = new EventRequest
  115. {
  116. type = eventName,
  117. msg = MiniJson.JsonEncode(parameters),
  118. };
  119. return AssembleAndSendWebRequest(request);
  120. }
  121. private static UnityWebRequest AssembleAndSendWebRequest(EventRequest request)
  122. {
  123. return AppStoreOnboardApi.asyncRequest(UnityWebRequest.kHttpVerbPOST, k_ENDPOINT, k_API_URL, null, request);
  124. }
  125. public static UnityWebRequest ProjectBuildEvent()
  126. {
  127. var parameters = Common.GetCommonParams();
  128. EventRequest request = new EventRequest
  129. {
  130. type = k_ProjectBuildEventName,
  131. msg = MiniJson.JsonEncode(parameters)
  132. };
  133. return AssembleAndSendWebRequest(request);
  134. }
  135. }
  136. #region models
  137. [Serializable]
  138. public class EventRequest
  139. {
  140. public string type;
  141. public string msg; // json string of payload
  142. }
  143. [Serializable]
  144. public class EventRequestResponse : GeneralResponse
  145. {
  146. }
  147. #endregion
  148. }