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

426 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 "";
}
}
}
}