Files
Commercialization.topon/AnyThinkPlugin/Script/IntegrationManager/Editor/ATConfig.cs

249 lines
10 KiB
C#
Raw Normal View History

2023-09-04 16:57:46 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Xml.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.Networking;
namespace AnyThink.Scripts.IntegrationManager.Editor
{
// public class ATConfig : ScriptableObject
public class ATConfig
{
public static string PLUGIN_VERSION = "2.0.1";
public static bool isDebug = false;
private static string LAST_SELECT_COUNTRY_KEY = "country_key"; //国家
public static int CHINA_COUNTRY = 1;
public static int NONCHINA_COUNTRY = 2;
public static string ANYTHINK_SDK_FILES_PATH = "Assets/AnyThinkAds";
//国内core aar包的父目录
public static string CHINA_ANDROID_CORE_FILES_PATH = "Assets/AnyThinkAds/Plugins/Android/China/anythink_base/";
public static string NONCHINA_ANDROID_CORE_FILES_PATH = "Assets/AnyThinkAds/Plugins/Android/NonChina/anythink_base/";
//国内Android network aar包的父目录
public static string CHINA_ANDROID_NETWORK_FILES_PARENT_PATH = "Assets/AnyThinkAds/Plugins/Android/China/mediation/";
//海外Android network 依赖文件的目录
public static string NONCHINA_ANDROID_NETWORK_FILES_PARENT_PATH = "Assets/AnyThinkAds/Plugins/Android/NonChina/mediation/";
//iOS network依赖文件的目录不区分国家
public static string IOS_NETWORK_FILES_PARENT_PATH = "Assets/AnyThinkAds/Plugins/iOS/";
// 保存已安装的network到本地
public static void saveInstalledNetworkVersion(string networkName, Versions v)
{
Versions versions = v.clone();
int country = getLocalCountry();
ATLog.log("saveInstalledNetworkVersion() >>> networkName: " + networkName + " unity: " + versions.Unity);
versions = initUnityForVerions(versions, networkName, country);
// ATPluginSetting.Instance.saveInstalledNetwork(networkName, country, versions);
string jsonStr = JsonUtility.ToJson(versions);
PlayerPrefs.SetString(networkName + "_" + country, jsonStr);
PlayerPrefs.Save();
}
public static void saveLocalCountry(int country)
{
PlayerPrefs.SetInt(LAST_SELECT_COUNTRY_KEY, country);
PlayerPrefs.Save();
}
//获取已安装的network版本包括core network
public static Versions getInstalledNetworkVersion(string networkName, int country)
{
string key = networkName + "_" + country;
string sdkJson = PlayerPrefs.GetString(key);
ATLog.log("getInstalledNetworkVersion() >>> networkName: " + networkName + " sdkJson: " + sdkJson + " country: " + country);
if (sdkJson == null || sdkJson.Length == 0)
{
return null;
}
Versions versions = JsonUtility.FromJson<Versions>(sdkJson);
versions = initUnityForVerions(versions, networkName, country);
return versions;
}
private static Versions initUnityForVerions(Versions versions, string networkName, int country)
{
if (versions == null)
{
return null;
}
//查找本地的android、iOS是否都已安装
string androidPath = getAndroidNetworkPath(networkName, country);
bool androidInstalled = isInstalledByPath(androidPath);
string iosPath = getIosNetworkPath(networkName);
bool iosInstalled = isInstalledByPath(iosPath);
if (!androidInstalled && iosInstalled)
{
// versions.Android = "";
versions.Unity = string.Format("ios_{0}", versions.Ios);
}
else if (androidInstalled && !iosInstalled)
{
// versions.Ios = "";
versions.Unity = string.Format("android_{0}", versions.Android);
}
else if (!androidInstalled && !iosInstalled)
{
versions.Unity = "";
}
//core network的unity版本是插件版本
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
{
versions.Unity = ATConfig.PLUGIN_VERSION;
}
ATLog.log("initUnityForVerions() >>> networkName: " + networkName + " androidInstalled: " + androidInstalled + " iosInstalled: " + iosInstalled + " unity: " + versions.Unity);
return versions;
}
public static bool isNetworkInstalled(string networkName, int country)
{
Versions versions = getInstalledNetworkVersion(networkName, country);
if (versions == null)
{
return false;
}
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName)) //core network判断是否已安装
{
string androidPath = getAndroidNetworkPath(networkName, country);
bool androidInstalled = isInstalledByPath(androidPath);
string iosPath = getIosNetworkPath(networkName);
bool iosInstalled = isInstalledByPath(iosPath);
return androidInstalled && iosInstalled;
} else { //network判断是否已安装
return !string.IsNullOrEmpty(versions.Unity);
}
}
public static bool isAndroidNetworkInstalled(string networkName, int country)
{
Versions versions = getInstalledNetworkVersion(networkName, country);
if (versions == null)
{
return false;
}
string androidPath = getAndroidNetworkPath(networkName, country);
bool androidInstalled = isInstalledByPath(androidPath);
return androidInstalled;
}
public static bool isIOSNetworkInstalled(string networkName, int country)
{
Versions versions = getInstalledNetworkVersion(networkName, country);
if (versions == null)
{
return false;
}
string iosPath = getIosNetworkPath(networkName);
bool iosInstalled = isInstalledByPath(iosPath);
return iosInstalled;
}
private static string getAndroidNetworkPath(string networkName, int country)
{
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
{
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(string networkName)
{
string defaultResult = IOS_NETWORK_FILES_PARENT_PATH + networkName.ToLower();
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
{
return IOS_NETWORK_FILES_PARENT_PATH + networkName; //Core network在本地的目录名称首字母是大写
}
// else if (networkName.Equals("Pangle"))
// {
// //获取SDK版本
// // Network coreNework = ATPluginSetting.Instance.CoreNetwork;
// // if (coreNework != null && coreNework.CurrentVersions != null)
// // {
// // string iosSdkVersion = coreNework.CurrentVersions.Ios;
// // string compareVersion = "6.1.78";
// // ATLog.log("getIosNetworkPath() >>> iosSdkVersion: " + iosSdkVersion);
// // VersionComparisonResult comparisonResult = ATDataUtil.CompareVersions(iosSdkVersion, compareVersion);
// // if (comparisonResult == VersionComparisonResult.Lesser) //小于6.1.78
// // {
// // string pangleName = isSelectedChina() ? "pangle_China" : "pangle_nonChina";
// // ATLog.log("getIosNetworkPath() >>> pangleName: " + pangleName);
// // return IOS_NETWORK_FILES_PARENT_PATH + pangleName;
// // }
// // }
// string pangleName = isSelectedChina() ? "pangle_China" : "pangle_nonChina";
// // ATLog.log("getIosNetworkPath() >>> pangleName: " + pangleName);
// return IOS_NETWORK_FILES_PARENT_PATH + pangleName;
// }
else if (networkName.Equals("MyTarget"))
{
return IOS_NETWORK_FILES_PARENT_PATH + networkName;
}
return defaultResult;
}
public static int getLocalCountry()
{
return PlayerPrefs.GetInt(LAST_SELECT_COUNTRY_KEY, CHINA_COUNTRY); //默认是国内
// return CHINA_COUNTRY;
}
public static bool isSelectedChina()
{
return getLocalCountry() == CHINA_COUNTRY;
}
public static void removeInstalledNetworkVersion(string networkName, int country)
{
// int country = getLocalCountry();
PlayerPrefs.DeleteKey(networkName + "_" + country);
}
public static string[] getNetworkFilesPath(string networkName, int country)
{
// if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName)) {
// return new string[]{ANYTHINK_SDK_FILES_PATH};
// }
string[] filesPath = new string[2];
filesPath[0] = getAndroidNetworkPath(networkName, country);
filesPath[1] = getIosNetworkPath(networkName);
return filesPath;
}
private static bool isInstalledByPath(string path)
{
if (Directory.Exists(path))
{
string[] files = Directory.GetFiles(path);
return files != null && files.Length > 0;
}
return false;
}
// private void OnEnable()
// {
// EditorApplication.quitting += Save;
// }
// private void OnDisable()
// {
// EditorApplication.quitting -= Save;
// }
// private void Save()
// {
// // EditorPrefs.SetInt("MySetting", 1); // 保存您的EditorPrefs数据
// PlayerPrefs.Save(); // 确保数据已被保存到磁盘上
// }
}
}