ATPluginLocalDataModel.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Xml.Linq;
  7. using UnityEditor;
  8. using UnityEngine;
  9. using UnityEngine.Networking;
  10. namespace AnyThink.Scripts.IntegrationManager.Editor
  11. {
  12. [Serializable]
  13. public class PluginData
  14. {
  15. public string pluginVersion; //插件版本
  16. public string[] androidVersions;
  17. public string[] iosVersions;
  18. public int country = ATConfig.getDefCountry(); //默认是1=china
  19. public Network anyThink;
  20. public Network[] mediatedNetworks;
  21. public PluginSettingData pluginSettingData;
  22. public NetworkRequestParams requestParams;
  23. }
  24. //请求network参数
  25. public class NetworkRequestParams {
  26. public int os;
  27. public string androidVersion;
  28. public string iosVersion;
  29. }
  30. [Serializable]
  31. public class Network : IComparable<Network>
  32. {
  33. //
  34. // Sample network data:
  35. //
  36. // {
  37. // "Name": "adcolony",
  38. // "DisplayName": "AdColony",
  39. // "DownloadUrl": "https://bintray.com/applovin/Unity-Mediation-Packages/download_file?file_path=AppLovin-AdColony-Adapters-Android-3.3.10.1-iOS-3.3.7.2.unitypackage",
  40. // "PluginFileName": "AppLovin-AdColony-Adapters-Android-3.3.10.1-iOS-3.3.7.2.unitypackage",
  41. // "DependenciesFilePath": "MaxSdk/Mediation/AdColony/Editor/Dependencies.xml",
  42. // "LatestVersions" : {
  43. // "Unity": "android_3.3.10.1_ios_3.3.7.2",
  44. // "Android": "3.3.10.1",
  45. // "Ios": "3.3.7.2"
  46. // }
  47. // }
  48. //
  49. public string Name;
  50. public string DisplayName;
  51. public string AndroidDownloadUrl;
  52. public string iOSDownloadloadUrl;
  53. // public string DependenciesFilePath;
  54. public string PluginFileName;
  55. public int Country;
  56. public Versions LatestVersions; //最新版本
  57. public Versions CurrentVersions; //当前版本
  58. [NonSerialized] public VersionComparisonResult CurrentToLatestVersionComparisonResult = VersionComparisonResult.Equal;
  59. // [NonSerialized] public bool RequiresUpdate = CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
  60. public bool isVersionEmpty() {
  61. if (LatestVersions != null) {
  62. ATLog.log("isVersionEmpty() >>> name: " + Name + " android: " + LatestVersions.Android + " ios: " + LatestVersions.Ios);
  63. return string.IsNullOrEmpty(LatestVersions.Android) && string.IsNullOrEmpty(LatestVersions.Ios);
  64. }
  65. return false;
  66. }
  67. public bool isReqiureUpdate()
  68. {
  69. return CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
  70. }
  71. public int CompareTo(Network other)
  72. {
  73. return this.DisplayName.CompareTo(other.DisplayName);
  74. }
  75. public string ToString() {
  76. return DisplayName + "-" + AndroidDownloadUrl + "-" + iOSDownloadloadUrl + "-" + Country;
  77. }
  78. }
  79. /// <summary>
  80. /// A helper data class used to get current versions from Dependency.xml files.
  81. /// </summary>
  82. [Serializable]
  83. public class Versions
  84. {
  85. public string Unity;
  86. public string Android;
  87. public string Ios;
  88. public override bool Equals(object value)
  89. {
  90. var versions = value as Versions;
  91. return versions != null
  92. && (Unity == null || Unity.Equals(versions.Unity))
  93. && (Android == null || Android.Equals(versions.Android))
  94. && (Ios == null || Ios.Equals(versions.Ios));
  95. }
  96. public bool HasEqualSdkVersions(Versions versions)
  97. {
  98. return versions != null && versions.Android == Android && versions.Ios == Ios;
  99. }
  100. public override int GetHashCode()
  101. {
  102. return new { Unity, Android, Ios }.GetHashCode();
  103. }
  104. public Versions clone()
  105. {
  106. Versions cloneObj = new Versions();
  107. cloneObj.Android = Android;
  108. cloneObj.Ios = Ios;
  109. cloneObj.Unity = Unity;
  110. return cloneObj;
  111. }
  112. }
  113. public enum VersionComparisonResult
  114. {
  115. Lesser = -1,
  116. Equal = 0,
  117. Greater = 1
  118. }
  119. //存在本地插件设置数据并序列化为json文件
  120. [Serializable]
  121. public class PluginSettingData
  122. {
  123. public int curCountry = ATConfig.getDefCountry(); //当前选择的国家
  124. public CountrySettingData china = new CountrySettingData(ATConfig.CHINA_COUNTRY); //国内地区
  125. public CountrySettingData nonchina = new CountrySettingData(ATConfig.NONCHINA_COUNTRY); //海外地区
  126. public CountrySettingData getCountrySettingData() {
  127. if (curCountry == ATConfig.CHINA_COUNTRY) {
  128. return china;
  129. } else {
  130. return nonchina;
  131. }
  132. }
  133. //Android 是否同时安装了国内海外地区
  134. public bool isBothInstallAndroid() {
  135. return !string.IsNullOrEmpty(china.android_version) && !string.IsNullOrEmpty(nonchina.android_version);
  136. }
  137. //iOS 是否同时安装了国内海外地区
  138. public bool isBothInstallIOS() {
  139. return !string.IsNullOrEmpty(china.ios_version) && !string.IsNullOrEmpty(nonchina.ios_version);
  140. }
  141. }
  142. //已安装的sdk版本
  143. [Serializable]
  144. public class CountrySettingData
  145. {
  146. public string android_version; //当前已安装Android sdk的版本号
  147. public string ios_version; //当前已安装的iOS sdk的版本号
  148. public int androidXSetting = 0; //当前的AndroidX设置,0=default; 1=修改为AndroidX;2=修改为非AndroidX
  149. public int country;
  150. public string android_admob_app_id;
  151. public string ios_admob_app_id;
  152. public CountrySettingData(int country) {
  153. this.country = country;
  154. }
  155. public string getAdmobAppId(int os) {
  156. if (os == ATConfig.OS_ANDROID) {
  157. return android_admob_app_id;
  158. } else {
  159. return ios_admob_app_id;
  160. }
  161. }
  162. public void setAdmobAppId(string appId, int os) {
  163. if (os == ATConfig.OS_ANDROID) {
  164. android_admob_app_id = appId;
  165. } else {
  166. ios_admob_app_id = appId;
  167. }
  168. }
  169. }
  170. //存储在本地的Network json数据
  171. [Serializable]
  172. public class NetworkLocalData
  173. {
  174. public string name;
  175. public string version;
  176. public int country;
  177. public string path;
  178. }
  179. [Serializable]
  180. public class HotfixPluginData
  181. {
  182. public string plugin_version;
  183. public string hot_fix_version;
  184. public string download_url;
  185. public int status;
  186. public string file_name;
  187. }
  188. }