SDK_UnityMoney/Assets/ThinkupTpnPlugin/Script/IntegrationManager/Editor/ATConfig.cs

426 lines
18 KiB
C#
Raw Normal View History

2025-08-30 05:15:51 +00:00
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 "";
}
}
}
}