426 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			426 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.Collections;
 | ||
| using System.Collections.Generic;
 | ||
| using System.IO;
 | ||
| using System.Linq;
 | ||
| using System.Text;
 | ||
| using System.Xml.Linq;
 | ||
| using UnityEditor;
 | ||
| using UnityEngine;
 | ||
| using UnityEngine.Networking;
 | ||
| // using AnyThink.Scripts.Assets;
 | ||
| using System.Text.RegularExpressions;
 | ||
| 
 | ||
| namespace AnyThink.Scripts.IntegrationManager.Editor
 | ||
| {
 | ||
| 
 | ||
|     public class ATConfig
 | ||
|     {
 | ||
| public static string PLUGIN_VERSION = "2.1.5";
 | ||
| public static bool isDebug = false;
 | ||
| 
 | ||
|         public static int PLUGIN_TYPE = 2;
 | ||
|         public static int OS_ANDROID = 1;
 | ||
|         public static int OS_IOS = 2;
 | ||
|         public static int CHINA_COUNTRY = 1;
 | ||
|         public static int NONCHINA_COUNTRY = 2;
 | ||
|         public static string ANYTHINK_SDK_FILES_PATH = "Assets/ThinkupTpnPlugin/AnyThinkAds";
 | ||
|         //国内Android core包的相关目录
 | ||
|         public static string[] CHINA_ANDROID_CORE_FILES_ARRAY = {Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/Editor"), 
 | ||
|         Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/thinkup_base"), 
 | ||
|         Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/mediation_plugin")};
 | ||
|         //海外Android core包的相关目录
 | ||
|         public static string[] NON_CHINA_ANDROID_CORE_FILES_ARRAY = {Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/thinkup_base"), 
 | ||
|         Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/Editor")};
 | ||
| 
 | ||
|         //国内core aar包的父目录
 | ||
|         public static string CHINA_ANDROID_CORE_FILES_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/thinkup_base/");
 | ||
|         public static string NONCHINA_ANDROID_CORE_FILES_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/thinkup_base/");
 | ||
|         //国内Android network aar包的父目录
 | ||
|         public static string CHINA_ANDROID_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/China/mediation/");
 | ||
|         //海外Android network 依赖文件的目录
 | ||
|         public static string NONCHINA_ANDROID_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/mediation/");
 | ||
|         //iOS network依赖文件的目录,不区分国家
 | ||
|         public static string IOS_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/iOS/China/");
 | ||
|         public static string NONCHINA_IOS_NETWORK_FILES_PARENT_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/iOS/NonChina/");
 | ||
|         //network json文件名
 | ||
|         public static string network_data_file_name = "network_data.json";
 | ||
|         //插件设置的数据
 | ||
|         public static string plugin_setting_data_path = "Assets/ThinkupTpnPlugin/Resources/json/" + PLUGIN_VERSION;
 | ||
|         private static string plugin_setting_data_file_name = "plugin_setting_data.json";
 | ||
| 
 | ||
|         //保存插件设置的数据,保存时机:安装core包、选择国家、切换SDK、androidX设置发生变化时
 | ||
|         public static void savePluginSettingData(PluginSettingData settingData)
 | ||
|         {
 | ||
|             var directoryPath = plugin_setting_data_path;
 | ||
|             // 确保目标文件夹存在
 | ||
|             if (!Directory.Exists(directoryPath))
 | ||
|             {
 | ||
|                 // 如果目录不存在,则创建它
 | ||
|                 Directory.CreateDirectory(directoryPath);
 | ||
|             }
 | ||
|             string fullPath = Path.Combine(directoryPath, plugin_setting_data_file_name);
 | ||
|             string settingDataStr = JsonUtility.ToJson(settingData);
 | ||
|             ATLog.log("savePluginSettingData() >>> fullPath: " + fullPath + " settingDataStr: " + settingDataStr);
 | ||
|             File.WriteAllText(fullPath, settingDataStr);
 | ||
|         }
 | ||
|         //获取插件设置的数据
 | ||
|         public static PluginSettingData getPluginSettingData()
 | ||
|         {
 | ||
|             string fullPath = Path.Combine(plugin_setting_data_path, plugin_setting_data_file_name);
 | ||
|             if (!File.Exists(fullPath)) {
 | ||
|                 return null;
 | ||
|             }
 | ||
|             string json = File.ReadAllText(fullPath);
 | ||
|             if(json == "") {
 | ||
|                 return null;
 | ||
|             }
 | ||
|             return JsonUtility.FromJson<PluginSettingData>(json);
 | ||
|         }
 | ||
| 
 | ||
|         public static bool removeSdk(int country, int os) {
 | ||
|             string path = ANYTHINK_SDK_FILES_PATH + "/Plugins";
 | ||
|              if (os == OS_ANDROID) {
 | ||
|                 path = path + "/Android";
 | ||
|             } else {
 | ||
|                 path = path + "/iOS";
 | ||
|             }
 | ||
|             if (country == CHINA_COUNTRY) {
 | ||
|                 path = path + "/China";
 | ||
|             } else {
 | ||
|                 path = path + "/NonChina";
 | ||
|             }
 | ||
|             if (Directory.Exists(path)) {
 | ||
|                 FileUtil.DeleteFileOrDirectory(path);
 | ||
|             }
 | ||
|             if (File.Exists(path + ".meta")) {
 | ||
|                 FileUtil.DeleteFileOrDirectory(path + ".meta");
 | ||
|             }
 | ||
|             return true;
 | ||
|         }
 | ||
| 
 | ||
|         //移除本地的network
 | ||
|         public static bool removeInstalledNetwork(Network network, int os)
 | ||
|         {
 | ||
|              //修改sdk的配置
 | ||
|             if (isCoreNetwork(network.Name) && os == OS_ANDROID) {
 | ||
|                 var paths = CHINA_ANDROID_CORE_FILES_ARRAY;
 | ||
|                 if (network.Country == NONCHINA_COUNTRY) {
 | ||
|                     paths = NON_CHINA_ANDROID_CORE_FILES_ARRAY;
 | ||
|                 }
 | ||
|                 foreach(string p in paths) {
 | ||
|                     if (Directory.Exists(p)) {
 | ||
|                         FileUtil.DeleteFileOrDirectory(p);
 | ||
|                     }
 | ||
|                     if (File.Exists(p + ".meta")) {
 | ||
|                         FileUtil.DeleteFileOrDirectory(p + ".meta");
 | ||
|                     }
 | ||
|                 }
 | ||
|                 return true;
 | ||
|             }
 | ||
|             var path = getAndroidNetworkPath(network);
 | ||
|             if (os == OS_IOS) {
 | ||
|                 path = getIosNetworkPath(network);
 | ||
|             }
 | ||
|             if (Directory.Exists(path)) {
 | ||
|                 FileUtil.DeleteFileOrDirectory(path);
 | ||
|                 if (File.Exists(path + ".meta")) {
 | ||
|                     FileUtil.DeleteFileOrDirectory(path + ".meta");
 | ||
|                 }
 | ||
|             }
 | ||
|             //针对mintegral改名字为gtm后,旧版升级到新版,旧版的mintegral目录需要删除
 | ||
|             var displayName = network.DisplayName;
 | ||
|             var name = network.Name;
 | ||
|             ATLog.log("removeInstalledNetwork() >>> displayName: " + displayName + " name: " + name);
 | ||
|             if (Equals(displayName, "Mintegral") && Equals(name, "Gtm"))
 | ||
|             {
 | ||
|                 displayName = "mintegral";
 | ||
|                 var mtgPath = getNetworkInstallPath(displayName, os, network.Country);
 | ||
|                 if (Directory.Exists(mtgPath))
 | ||
|                 {
 | ||
|                     FileUtil.DeleteFileOrDirectory(mtgPath);
 | ||
|                     if (File.Exists(mtgPath + ".meta"))
 | ||
|                     {
 | ||
|                         FileUtil.DeleteFileOrDirectory(mtgPath + ".meta");
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|             return true;
 | ||
|         }
 | ||
| 
 | ||
|         // 保存已安装的network到本地
 | ||
|         public static void saveInstalledNetworkVersion(Network network, int os)
 | ||
|         {
 | ||
|             if (isCoreNetwork(network.Name)) {
 | ||
|                 return;
 | ||
|             }
 | ||
|             var networkDataFileName = network_data_file_name;
 | ||
|             var networkName = network.Name.ToLower();
 | ||
|             int country = network.Country;
 | ||
|             var installedVersions = network.CurrentVersions;
 | ||
|             if (installedVersions != null) {
 | ||
|                 if (os == OS_ANDROID) {
 | ||
|                     var android_version = installedVersions.Android;
 | ||
|                     //Android 
 | ||
|                     if (!string.IsNullOrEmpty(android_version)) {
 | ||
|                         var networkPath = getAndroidNetworkPath(network);
 | ||
|                         Directory.CreateDirectory(networkPath);
 | ||
|                         ATLog.log("saveInstalledNetworkVersion() >>> android networkPath: " + networkPath + " exist: " + Directory.Exists(networkPath));
 | ||
|                         if (Directory.Exists(networkPath)) {
 | ||
|                             string fullPath = Path.Combine(networkPath, networkDataFileName);
 | ||
|                             var networkData = new NetworkLocalData();
 | ||
|                             networkData.name = networkName;
 | ||
|                             networkData.country = country;
 | ||
|                             networkData.version = android_version;
 | ||
|                             networkData.path = networkPath;
 | ||
| 
 | ||
|                             File.WriteAllText(fullPath, JsonUtility.ToJson(networkData));
 | ||
|                         }
 | ||
|                     }
 | ||
|                 } else {
 | ||
|                     //iOS
 | ||
|                     var ios_version = installedVersions.Ios;
 | ||
|                     if (!string.IsNullOrEmpty(ios_version)) {
 | ||
|                         var networkPath = getIosNetworkPath(network);
 | ||
|                         Directory.CreateDirectory(networkPath);
 | ||
|                         ATLog.log("saveInstalledNetworkVersion() >>> ios networkPath: " + networkPath);
 | ||
|                         if (Directory.Exists(networkPath)) {
 | ||
|                             string fullPath = Path.Combine(networkPath, networkDataFileName);
 | ||
|                             var networkData = new NetworkLocalData();
 | ||
|                             networkData.name = networkName;
 | ||
|                             networkData.country = country;
 | ||
|                             networkData.version = ios_version;
 | ||
|                             networkData.path = networkPath;
 | ||
| 
 | ||
|                             File.WriteAllText(fullPath, JsonUtility.ToJson(networkData));
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         //Core 是否已安装
 | ||
|         public static bool isCoreNetworkInstalled(PluginSettingData pluginSettingData, int os) {
 | ||
|             var countrySettingData = pluginSettingData.getCountrySettingData();
 | ||
|             if (os == OS_ANDROID) {
 | ||
|                 return !string.IsNullOrEmpty(countrySettingData.android_version);
 | ||
|             } else {
 | ||
|                 return !string.IsNullOrEmpty(countrySettingData.ios_version);
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         //Network是否已安装
 | ||
|         public static bool isNetworkInstalled(Network network, int os)
 | ||
|         {
 | ||
|             if (isCoreNetwork(network.Name)) {
 | ||
|                 var pluginSettingData = getPluginSettingData();
 | ||
|                 return isCoreNetworkInstalled(pluginSettingData, os);
 | ||
|             }
 | ||
|             var path = getIosNetworkPath(network);
 | ||
|             if (os == OS_ANDROID) {
 | ||
|                 path = getAndroidNetworkPath(network);
 | ||
|             }
 | ||
|             return File.Exists(Path.Combine(path, network_data_file_name));
 | ||
|         }
 | ||
| 
 | ||
|         //Network是否已安装,根据name
 | ||
|         public static bool isNetworkInstalledByName(string name, int os)
 | ||
|         {
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData != null) {
 | ||
|                 var country = pluginSettingData.curCountry;
 | ||
|                 var network = new Network();
 | ||
|                 network.Name = name;
 | ||
|                 network.Country = country;
 | ||
|                 return isNetworkInstalled(network, os);
 | ||
|             }
 | ||
|             return false;
 | ||
|         }
 | ||
| 
 | ||
|         private static string getAndroidNetworkPath(Network network)
 | ||
|         {
 | ||
|             var networkName = network.Name.ToLower();
 | ||
|             var country = network.Country;
 | ||
|             if (isCoreNetwork(networkName))
 | ||
|             {
 | ||
|                 return country == CHINA_COUNTRY ? CHINA_ANDROID_CORE_FILES_PATH : NONCHINA_ANDROID_CORE_FILES_PATH;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 return country == CHINA_COUNTRY ? CHINA_ANDROID_NETWORK_FILES_PARENT_PATH + networkName.ToLower() : NONCHINA_ANDROID_NETWORK_FILES_PARENT_PATH + networkName.ToLower();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         private static string getIosNetworkPath(Network network)
 | ||
|         {
 | ||
|             var networkName = network.Name.ToLower();
 | ||
|             var country = network.Country;
 | ||
|             // if (isCoreNetwork(networkName))
 | ||
|             // {
 | ||
|             //     return IOS_NETWORK_FILES_PARENT_PATH;
 | ||
|             // } else {
 | ||
|             // }
 | ||
|             return country == CHINA_COUNTRY ? IOS_NETWORK_FILES_PARENT_PATH + networkName : NONCHINA_IOS_NETWORK_FILES_PARENT_PATH + networkName;
 | ||
|         }
 | ||
| 
 | ||
|         //根据network名字去获取安装路径
 | ||
|         private static string getNetworkInstallPath(string networkName, int os, int country)
 | ||
|         {
 | ||
|             if (os == OS_ANDROID) {
 | ||
|                 return country == CHINA_COUNTRY ? CHINA_ANDROID_NETWORK_FILES_PARENT_PATH + networkName.ToLower() : NONCHINA_ANDROID_NETWORK_FILES_PARENT_PATH + networkName.ToLower();
 | ||
|             } else {
 | ||
|                 return country == CHINA_COUNTRY ? IOS_NETWORK_FILES_PARENT_PATH + networkName : NONCHINA_IOS_NETWORK_FILES_PARENT_PATH + networkName;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         
 | ||
|         public static int getSelectedCountry()
 | ||
|         {
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData != null)
 | ||
|             {
 | ||
|                 return pluginSettingData.curCountry;
 | ||
|             }
 | ||
|             return CHINA_COUNTRY;
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         public static bool isCoreNetwork(string networkName) {
 | ||
|             return Equals(networkName.ToLower(), ATIntegrationManager.AnyThinkNetworkName.ToLower());
 | ||
|         }
 | ||
| 
 | ||
|         //查找本地是否有已安装network,并进行版本赋值
 | ||
|         public static void initNetworkLocalData(Network network) {
 | ||
|             var networkDataFileName = network_data_file_name;
 | ||
|             var androidPath = getAndroidNetworkPath(network);
 | ||
|             var iosPath = getIosNetworkPath(network);
 | ||
| 
 | ||
|             var androidDataFile = Path.Combine(androidPath, networkDataFileName);
 | ||
|             var iosDataFile = Path.Combine(iosPath, networkDataFileName);
 | ||
| 
 | ||
|             var curVersions = network.CurrentVersions;
 | ||
|             if (curVersions == null) {
 | ||
|                 curVersions = new Versions();
 | ||
|             }
 | ||
| 
 | ||
|             if (File.Exists(androidDataFile)) {
 | ||
|                 string a_json = File.ReadAllText(androidDataFile);
 | ||
|                 var a_data = JsonUtility.FromJson<NetworkLocalData>(a_json);
 | ||
|                 curVersions.Android = a_data.version;
 | ||
|             }
 | ||
|            
 | ||
|             if (File.Exists(iosDataFile)) {
 | ||
|                 string i_json = File.ReadAllText(iosDataFile);
 | ||
|                 var i_data = JsonUtility.FromJson<NetworkLocalData>(i_json);
 | ||
|                 curVersions.Ios = i_data.version;
 | ||
|             }
 | ||
|             network.CurrentVersions = curVersions;
 | ||
|         }
 | ||
| 
 | ||
|         //当前是否选择国内地区
 | ||
|         public static bool isSelectedChina() {
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData != null) {
 | ||
|                 return pluginSettingData.curCountry == CHINA_COUNTRY;
 | ||
|             }
 | ||
|             return true;
 | ||
|         }
 | ||
| 
 | ||
|         //获取admob app id
 | ||
|         public static string getAdmobAppIdByOs(int os) {
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData == null) {
 | ||
|                 return "";
 | ||
|             }
 | ||
|             var settingData = pluginSettingData.getCountrySettingData();
 | ||
|             return settingData.getAdmobAppId(os);
 | ||
|         }
 | ||
| 
 | ||
|         public static bool enableAndroidX() {
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData == null) {
 | ||
|                 return false;
 | ||
|             }
 | ||
|             return pluginSettingData.getCountrySettingData().androidXSetting == 1;
 | ||
|         }
 | ||
| 
 | ||
|         public static bool isDefaultAndroidX() {
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData == null) {
 | ||
|                 return false;
 | ||
|             }
 | ||
|             return pluginSettingData.getCountrySettingData().androidXSetting == 0;
 | ||
|         }
 | ||
| 
 | ||
|         //获取默认选中的地区
 | ||
|         public static int getDefCountry() {
 | ||
|             // string version = PLUGIN_VERSION;
 | ||
|             // int lastIndex = version.LastIndexOf('.');
 | ||
|         
 | ||
|             // if (lastIndex != -1)
 | ||
|             // {   
 | ||
|             //     //2.1.0:是区分国内海外的插件,2.1.01:后缀多了1,是只有海外的插件
 | ||
|             //     string lastPart = version.Substring(lastIndex + 1);
 | ||
|             //     if (lastPart.Length == 2) {
 | ||
|             //         return NONCHINA_COUNTRY;
 | ||
|             //     }
 | ||
|             // }
 | ||
|             if(PLUGIN_TYPE == 2) {
 | ||
|                 return NONCHINA_COUNTRY;
 | ||
|             }
 | ||
|             return CHINA_COUNTRY;
 | ||
|         }
 | ||
| 
 | ||
|         public static string[] getCountryArray() {
 | ||
|             // new string[] { "ChinaMainland", "Overseas" }
 | ||
|             // string version = PLUGIN_VERSION;
 | ||
|             // int lastIndex = version.LastIndexOf('.');
 | ||
|         
 | ||
|             // if (lastIndex != -1)
 | ||
|             // {   
 | ||
|             //     //2.1.0:是区分国内海外的插件,2.1.01:后缀多了1,是只有海外的插件
 | ||
|             //     string lastPart = version.Substring(lastIndex + 1);
 | ||
|             //     if (lastPart.Length == 2) {
 | ||
|             //         return new string[] { "Overseas" };
 | ||
|             //     }
 | ||
|             // }
 | ||
|             if(PLUGIN_TYPE == 2) {
 | ||
|                 return new string[] { "Overseas" };
 | ||
|             }
 | ||
|             return new string[] { "ChinaMainland", "Overseas" };
 | ||
|         }
 | ||
| 
 | ||
|         public static string getRegionIntegrateTip()
 | ||
|         {
 | ||
|             //Tips: If ChinaMainland and Oversea are integrated at the same time, there will be compilation conflicts, whether it is Android or iOS platform.
 | ||
|             //Currently, the Android platform integrates ChinaMainland and Oversea at the same time, which may cause compilation errors or other errors.
 | ||
|             var pluginSettingData = getPluginSettingData();
 | ||
|             if (pluginSettingData == null) {
 | ||
|                 return "";
 | ||
|             }
 | ||
|             var sb = new StringBuilder();
 | ||
|             sb.Append("Tips: Currently, ");
 | ||
|             var android_tip = false;
 | ||
|             if (pluginSettingData.isBothInstallAndroid()) {
 | ||
|                 sb.Append("the Android platform ");
 | ||
|                 android_tip = true;
 | ||
|             }
 | ||
|             var ios_tip = false;
 | ||
|             if (pluginSettingData.isBothInstallIOS()) {
 | ||
|                 if (android_tip) {
 | ||
|                     sb.Append("and ");
 | ||
|                 }
 | ||
|                 sb.Append("iOS platform ");
 | ||
|                 ios_tip = true;
 | ||
|             }
 | ||
| 
 | ||
|             if (android_tip || ios_tip) {
 | ||
|                 sb.Append("integrates ChinaMainland and Oversea at the same time, which may cause compilation error or other errors.");
 | ||
|                 return sb.ToString();
 | ||
|             } else {
 | ||
|                 return "";
 | ||
|             }
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
| } |