You've already forked Commercialization.topon
update 1.1.25
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ffa4e194d92494cefa94fd3adb9dcb93
|
||||
guid: 6d4b4203581584a20bfcf8c8570437f6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
using AnyThink.Scripts.IntegrationManager.Editor;
|
||||
using Network = AnyThink.Scripts.IntegrationManager.Editor.Network;
|
||||
using IntegrationManager = AnyThink.Scripts.IntegrationManager.Editor.ATIntegrationManager;
|
||||
|
||||
public class ATAssetDatabaseManager : ScriptableObject
|
||||
{
|
||||
public const string SettingsExportPath = "Assets/AnyThinkPlugin/Resources/Assets/ATAssetDatabaseManager.asset";
|
||||
|
||||
private static ATAssetDatabaseManager instance;
|
||||
public Network importingNetwork = null;
|
||||
|
||||
public delegate void DownloadPluginProgressCallback(string pluginName, float progress, bool done);
|
||||
public delegate void ImportPackageCompletedCallback(Network network);
|
||||
|
||||
public DownloadPluginProgressCallback downloadPluginProgressCallback;
|
||||
public ImportPackageCompletedCallback importPackageCompletedCallback;
|
||||
|
||||
// public Network importingNetwork;
|
||||
|
||||
public static ATAssetDatabaseManager Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
var settingsDir = Path.GetDirectoryName(SettingsExportPath);
|
||||
if (!Directory.Exists(settingsDir))
|
||||
{
|
||||
Directory.CreateDirectory(settingsDir);
|
||||
}
|
||||
string settingsFilePath = SettingsExportPath;
|
||||
|
||||
instance = AssetDatabase.LoadAssetAtPath<ATAssetDatabaseManager>(settingsFilePath);
|
||||
if (instance != null) return instance;
|
||||
|
||||
instance = CreateInstance<ATAssetDatabaseManager>();
|
||||
AssetDatabase.CreateAsset(instance, settingsFilePath);
|
||||
// init();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
private ATAssetDatabaseManager()
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
private void init()
|
||||
{
|
||||
ATLog.log("ATAssetDatabaseManager inited");
|
||||
|
||||
AssetDatabase.importPackageCompleted += packageName =>
|
||||
{
|
||||
ATLog.logFormat("importPackageCompleted() >>> packageName: {0} importingNetwork: {1}", new object[] { packageName, importingNetwork });
|
||||
if (!IsImportingNetwork(packageName)) return;
|
||||
ATLog.log("importPackageCompleted() >>> import succeed.");
|
||||
// ATConfig.saveInstalledNetworkVersion(packageName, )
|
||||
// var pluginParentDir = PluginParentDirectory;
|
||||
// var isPluginOutsideAssetsDir = IsPluginOutsideAssetsDirectory;
|
||||
// MovePluginFilesIfNeeded(pluginParentDir, isPluginOutsideAssetsDir);
|
||||
// AddLabelsToAssetsIfNeeded(pluginParentDir, isPluginOutsideAssetsDir);
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
CallImportPackageCompletedCallback(importingNetwork);
|
||||
// importingNetwork = null;
|
||||
setImportingNetworkNull();
|
||||
};
|
||||
|
||||
AssetDatabase.importPackageCancelled += packageName =>
|
||||
{
|
||||
ATLog.logFormat("importPackageCancelled() >>> packageName: {0}", new object[] { packageName });
|
||||
if (!IsImportingNetwork(packageName)) return;
|
||||
|
||||
// MaxSdkLogger.UserDebug("Package import cancelled.");
|
||||
// importingNetwork = null;
|
||||
setImportingNetworkNull();
|
||||
};
|
||||
|
||||
AssetDatabase.importPackageFailed += (packageName, errorMessage) =>
|
||||
{
|
||||
ATLog.logFormat("importPackageFailed() >>> packageName: {0}, errorMsg: {1}", new object[] { packageName, errorMessage });
|
||||
if (!IsImportingNetwork(packageName)) return;
|
||||
|
||||
// MaxSdkLogger.UserError(errorMessage);
|
||||
// importingNetwork = null;
|
||||
setImportingNetworkNull();
|
||||
};
|
||||
}
|
||||
|
||||
private void setImportingNetworkNull()
|
||||
{
|
||||
// ATPluginSetting.Instance.ImportingNetwork = null;
|
||||
importingNetwork = null;
|
||||
}
|
||||
|
||||
public void CallDownloadPluginProgressCallback(string pluginName, float progress, bool isDone)
|
||||
{
|
||||
if (downloadPluginProgressCallback == null) return;
|
||||
|
||||
downloadPluginProgressCallback(pluginName, progress, isDone);
|
||||
}
|
||||
|
||||
public void CallImportPackageCompletedCallback(Network network)
|
||||
{
|
||||
ATLog.log("CallImportPackageCompletedCallback() >>> network: " + network + " importPackageCompletedCallback: " + importPackageCompletedCallback);
|
||||
if (network != null)
|
||||
{
|
||||
ATConfig.saveInstalledNetworkVersion(network.Name, network.LatestVersions);
|
||||
// ATIntegrationManager.Instance.UpdateCurrentVersions(network);
|
||||
}
|
||||
if (importPackageCompletedCallback == null) return;
|
||||
importPackageCompletedCallback(network);
|
||||
}
|
||||
|
||||
public string GetPluginFileName(Network network)
|
||||
{
|
||||
// return network.Name.ToLowerInvariant() + "_" + network.LatestVersions.Unity + ".unitypackage";
|
||||
return network.PluginFileName;
|
||||
}
|
||||
|
||||
private bool IsImportingNetwork(string packageName)
|
||||
{
|
||||
// Note: The pluginName doesn't have the '.unitypacakge' extension included in its name but the pluginFileName does. So using Contains instead of Equals.
|
||||
//window系统packageName是:项目路径/AnyThinkCore,Mac系统是: AnyThinkCore
|
||||
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||
if (packageName.Contains("\\"))
|
||||
{
|
||||
string[] packageNameArray = packageName.Split('\\');
|
||||
if (packageNameArray != null && packageNameArray.Length > 0)
|
||||
{
|
||||
packageName = packageNameArray[packageNameArray.Length -1];
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return importingNetwork != null && GetPluginFileName(importingNetwork).Contains(packageName);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e1c2a723fcc7d4a5cad5c4b082740029
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -32,6 +32,7 @@ public class ATAssetPostprocessor : AssetPostprocessor
|
||||
{
|
||||
log("Moved Asset: " + movedAssets[i] + " from: " + movedFromAssetPaths[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void OnPreprocessAsset()
|
||||
|
||||
@@ -3,11 +3,12 @@ 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 AnyThink.Scripts.Assets;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
@@ -15,179 +16,212 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
|
||||
public class ATConfig
|
||||
{
|
||||
public static string PLUGIN_VERSION = "2.0.3";
|
||||
public static string PLUGIN_VERSION = "2.1.0";
|
||||
public static bool isDebug = false;
|
||||
private static string LAST_SELECT_COUNTRY_KEY = "country_key"; //国家
|
||||
|
||||
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/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/";
|
||||
public static string ANYTHINK_SDK_FILES_PATH = "Assets/AnyThinkPlugin/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/anythink_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/anythink_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/anythink_base/");
|
||||
public static string NONCHINA_ANDROID_CORE_FILES_PATH = Path.Combine(ANYTHINK_SDK_FILES_PATH, "Plugins/Android/NonChina/anythink_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";
|
||||
//插件设置的数据
|
||||
private static string plugin_setting_data_path = "Assets/AnyThinkPlugin/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");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// 保存已安装的network到本地
|
||||
public static void saveInstalledNetworkVersion(string networkName, Versions v)
|
||||
public static void saveInstalledNetworkVersion(Network network, int os)
|
||||
{
|
||||
Versions versions = v.clone();
|
||||
int country = getLocalCountry();
|
||||
|
||||
ATLog.log("saveInstalledNetworkVersion() >>> networkName: " + networkName + " unity: " + versions.Unity);
|
||||
versions = initUnityForVerions(versions, networkName, country);
|
||||
|
||||
string jsonStr = JsonUtility.ToJson(versions);
|
||||
string key = networkName + "_" + country;
|
||||
// ATConfigAsset2.Instance.saveInstalledNetworkVersion(key, jsonStr);
|
||||
PlayerPrefs.SetString(key, jsonStr);
|
||||
}
|
||||
|
||||
//获取已安装的network版本,包括core network
|
||||
public static Versions getInstalledNetworkVersion(string networkName, int country)
|
||||
{
|
||||
Versions versions = null;
|
||||
string sdkJson = string.Empty;
|
||||
|
||||
string key = networkName + "_" + country;
|
||||
|
||||
// sdkJson = ATConfigAsset2.Instance.getInstalledNetworkVersion(key);
|
||||
sdkJson = PlayerPrefs.GetString(key);
|
||||
|
||||
ATLog.log("getInstalledNetworkVersion() >>> key: " + key + " sdkJson: " + sdkJson + " country: " + country);
|
||||
if (sdkJson == null || sdkJson.Length == 0)
|
||||
{
|
||||
//适配旧版本插件,避免直接升级SDK
|
||||
// if (PlayerPrefs.HasKey(key)) {
|
||||
// sdkJson = PlayerPrefs.GetString(key);
|
||||
// PlayerPrefs.DeleteKey(key);
|
||||
// } else {
|
||||
// return null;
|
||||
// }
|
||||
return null;
|
||||
if (isCoreNetwork(network.Name)) {
|
||||
return;
|
||||
}
|
||||
|
||||
versions = JsonUtility.FromJson<Versions>(sdkJson);
|
||||
versions = initUnityForVerions(versions, networkName, country);
|
||||
return versions;
|
||||
}
|
||||
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);
|
||||
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;
|
||||
|
||||
public static int getLocalCountry()
|
||||
{
|
||||
string key = LAST_SELECT_COUNTRY_KEY;
|
||||
//适配旧版本插件,避免直接升级SDK
|
||||
// if (PlayerPrefs.HasKey(key)) {
|
||||
// int country = PlayerPrefs.GetInt(key);
|
||||
// saveLocalCountry(country);
|
||||
// PlayerPrefs.DeleteKey(key);
|
||||
// }
|
||||
// return ATConfigAsset2.Instance.LocalCountry;
|
||||
return PlayerPrefs.GetInt(key, CHINA_COUNTRY);
|
||||
}
|
||||
File.WriteAllText(fullPath, JsonUtility.ToJson(networkData));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//iOS
|
||||
var ios_version = installedVersions.Ios;
|
||||
if (!string.IsNullOrEmpty(ios_version)) {
|
||||
var networkPath = getIosNetworkPath(network);
|
||||
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;
|
||||
|
||||
public static void saveLocalCountry(int country)
|
||||
{
|
||||
// ATConfigAsset2.Instance.LocalCountry = country;
|
||||
PlayerPrefs.SetInt(LAST_SELECT_COUNTRY_KEY, country);
|
||||
}
|
||||
|
||||
public static void removeInstalledNetworkVersion(string networkName, int country)
|
||||
{
|
||||
string key = networkName + "_" + country;
|
||||
|
||||
if (PlayerPrefs.HasKey(key)) {
|
||||
PlayerPrefs.DeleteKey(key);
|
||||
}
|
||||
ATLog.log("removeInstalledNetworkVersion() >>> networkName: " + networkName + " country: " + country);
|
||||
// ATConfigAsset2.Instance.removeInstalledNetworkVersion(key);
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
File.WriteAllText(fullPath, JsonUtility.ToJson(networkData));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool isAndroidNetworkInstalled(string networkName, int country)
|
||||
{
|
||||
Versions versions = getInstalledNetworkVersion(networkName, country);
|
||||
if (versions == null)
|
||||
{
|
||||
return false;
|
||||
//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);
|
||||
}
|
||||
string androidPath = getAndroidNetworkPath(networkName, country);
|
||||
bool androidInstalled = isInstalledByPath(androidPath);
|
||||
return androidInstalled;
|
||||
}
|
||||
|
||||
public static bool isIOSNetworkInstalled(string networkName, int country)
|
||||
//Network是否已安装
|
||||
public static bool isNetworkInstalled(Network network, int os)
|
||||
{
|
||||
Versions versions = getInstalledNetworkVersion(networkName, country);
|
||||
if (versions == null)
|
||||
{
|
||||
return false;
|
||||
if (isCoreNetwork(network.Name)) {
|
||||
var pluginSettingData = getPluginSettingData();
|
||||
return isCoreNetworkInstalled(pluginSettingData, os);
|
||||
}
|
||||
string iosPath = getIosNetworkPath(networkName);
|
||||
bool iosInstalled = isInstalledByPath(iosPath);
|
||||
return iosInstalled;
|
||||
var path = getIosNetworkPath(network);
|
||||
if (os == OS_ANDROID) {
|
||||
path = getAndroidNetworkPath(network);
|
||||
}
|
||||
return File.Exists(Path.Combine(path, network_data_file_name));
|
||||
}
|
||||
|
||||
private static string getAndroidNetworkPath(string networkName, int country)
|
||||
//Network是否已安装,根据name
|
||||
public static bool isNetworkInstalledByName(string name, int os)
|
||||
{
|
||||
if (networkName.Equals(ATIntegrationManager.AnyThinkNetworkName))
|
||||
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;
|
||||
}
|
||||
@@ -197,82 +231,144 @@ public static bool isDebug = false;
|
||||
}
|
||||
}
|
||||
|
||||
private static string getIosNetworkPath(string networkName)
|
||||
private static string getIosNetworkPath(Network network)
|
||||
{
|
||||
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"))
|
||||
var networkName = network.Name.ToLower();
|
||||
var country = network.Country;
|
||||
// if (isCoreNetwork(networkName))
|
||||
// {
|
||||
// //获取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;
|
||||
// return IOS_NETWORK_FILES_PARENT_PATH;
|
||||
// } else {
|
||||
// }
|
||||
else if (networkName.Equals("MyTarget"))
|
||||
{
|
||||
return IOS_NETWORK_FILES_PARENT_PATH + networkName;
|
||||
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 defaultResult;
|
||||
return CHINA_COUNTRY;
|
||||
}
|
||||
|
||||
public static bool isSelectedChina()
|
||||
{
|
||||
return getLocalCountry() == CHINA_COUNTRY;
|
||||
|
||||
public static bool isCoreNetwork(string networkName) {
|
||||
return Equals(networkName.ToLower(), ATIntegrationManager.AnyThinkNetworkName.ToLower());
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
//查找本地是否有已安装network,并进行版本赋值
|
||||
public static void initNetworkLocalData(Network network) {
|
||||
var networkDataFileName = network_data_file_name;
|
||||
var androidPath = getAndroidNetworkPath(network);
|
||||
var iosPath = getIosNetworkPath(network);
|
||||
|
||||
private static bool isInstalledByPath(string path)
|
||||
{
|
||||
if (Directory.Exists(path))
|
||||
{
|
||||
string[] files = Directory.GetFiles(path);
|
||||
return files != null && files.Length > 0;
|
||||
var androidDataFile = Path.Combine(androidPath, networkDataFileName);
|
||||
var iosDataFile = Path.Combine(iosPath, networkDataFileName);
|
||||
|
||||
var curVersions = network.CurrentVersions;
|
||||
if (curVersions == null) {
|
||||
curVersions = new Versions();
|
||||
}
|
||||
return false;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
// private void OnEnable()
|
||||
// {
|
||||
// EditorApplication.quitting += Save;
|
||||
// }
|
||||
//当前是否选择国内地区
|
||||
public static bool isSelectedChina() {
|
||||
var pluginSettingData = getPluginSettingData();
|
||||
if (pluginSettingData != null) {
|
||||
return pluginSettingData.curCountry == CHINA_COUNTRY;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// private void OnDisable()
|
||||
// {
|
||||
// EditorApplication.quitting -= Save;
|
||||
// }
|
||||
//获取admob app id
|
||||
public static string getAdmobAppIdByOs(int os) {
|
||||
var pluginSettingData = getPluginSettingData();
|
||||
var settingData = pluginSettingData.getCountrySettingData();
|
||||
return settingData.getAdmobAppId(os);
|
||||
}
|
||||
|
||||
// private void Save()
|
||||
// {
|
||||
// // EditorPrefs.SetInt("MySetting", 1); // 保存您的EditorPrefs数据
|
||||
// PlayerPrefs.Save(); // 确保数据已被保存到磁盘上
|
||||
// }
|
||||
public static bool enableAndroidX() {
|
||||
var pluginSettingData = getPluginSettingData();
|
||||
return pluginSettingData.getCountrySettingData().enableAndroidX;
|
||||
}
|
||||
|
||||
//获取默认选中的地区
|
||||
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;
|
||||
}
|
||||
}
|
||||
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" };
|
||||
}
|
||||
}
|
||||
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 "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cceee32f5d81d45d2969563d041f6183
|
||||
guid: 6bfb7071ec4964e539ff5cf42d38b69c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
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;
|
||||
using UnityEngine.Serialization;
|
||||
// using Newtonsoft.Json;
|
||||
|
||||
namespace AnyThink.Scripts.Assets
|
||||
{
|
||||
|
||||
public class ConfigData {
|
||||
public int localCountry = 1;
|
||||
public Dictionary<string, string> installedNetworkVersion = new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
public class ATConfigAsset
|
||||
{
|
||||
public string filePath = "Assets/AnyThinkPlugin/Resources/ATConfigData.json";
|
||||
|
||||
private static readonly object lockObject = new object(); // 创建一个静态对象作为锁
|
||||
|
||||
private static ATConfigAsset instance;
|
||||
private ConfigData configData;
|
||||
|
||||
private ATConfigAsset() {
|
||||
|
||||
}
|
||||
|
||||
public static ATConfigAsset Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new ATConfigAsset();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public int getLocalCountry() {
|
||||
getJsonFile();
|
||||
return Instance.configData.localCountry;
|
||||
}
|
||||
|
||||
public void setLocalCountry(int country) {
|
||||
configData.localCountry = country;
|
||||
updateJsonFile();
|
||||
}
|
||||
|
||||
public void saveInstalledNetworkVersion(string key, string version)
|
||||
{
|
||||
configData.installedNetworkVersion[key] = version;
|
||||
ATLog.log("updateJsonFile() >>> saveInstalledNetworkVersion: key = " + key + " version = " + version);
|
||||
updateJsonFile();
|
||||
}
|
||||
|
||||
public void removeInstalledNetworkVersion(string key)
|
||||
{
|
||||
ATLog.log("updateJsonFile() >>> removeInstalledNetworkVersion: key = " + key);
|
||||
if (configData.installedNetworkVersion.ContainsKey(key)) {
|
||||
configData.installedNetworkVersion.Remove(key);
|
||||
}
|
||||
updateJsonFile();
|
||||
}
|
||||
|
||||
public string getInstalledNetworkVersion(string key)
|
||||
{
|
||||
getJsonFile();
|
||||
if (Instance.configData.installedNetworkVersion.ContainsKey(key)) {
|
||||
return Instance.configData.installedNetworkVersion[key];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private void updateJsonFile() {
|
||||
// lock(lockObject) {
|
||||
// if (configData == null) {
|
||||
// configData = new ConfigData();
|
||||
// }
|
||||
// string json = JsonConvert.SerializeObject(configData);
|
||||
// System.IO.File.WriteAllText(filePath, json);
|
||||
// ATLog.log("updateJsonFile() >>> json: " + json);
|
||||
// }
|
||||
}
|
||||
|
||||
private void getJsonFile() {
|
||||
// lock(lockObject) {
|
||||
// if (!Directory.Exists(filePath)) {
|
||||
// configData = new ConfigData();
|
||||
// updateJsonFile();
|
||||
// }
|
||||
// string jsonString = System.IO.File.ReadAllText(filePath);
|
||||
// ATLog.log("getJsonFile() >>> jsonString: " + jsonString);
|
||||
// Instance.configData = JsonConvert.DeserializeObject<ConfigData>(jsonString);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7c1b7fbe91a24b29883c3b8d420768f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,83 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace AnyThink.Scripts.Assets
|
||||
{
|
||||
[Serializable]
|
||||
public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>
|
||||
{
|
||||
}
|
||||
|
||||
public class ATConfigAsset2 : ScriptableObject
|
||||
{
|
||||
public const string SettingsExportPath = "Assets/AnyThinkPlugin/Resources/Assets/ATConfigData.asset";
|
||||
|
||||
private static ATConfigAsset2 instance;
|
||||
|
||||
public static ATConfigAsset2 Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
string settingsFilePath = SettingsExportPath;
|
||||
var settingsDir = Path.GetDirectoryName(settingsFilePath);
|
||||
if (!Directory.Exists(settingsDir))
|
||||
{
|
||||
Directory.CreateDirectory(settingsDir);
|
||||
}
|
||||
|
||||
// instance = AssetDatabase.LoadAssetAtPath<ATConfigAsset>(settingsFilePath);
|
||||
instance = Resources.Load<ATConfigAsset2>(settingsFilePath);
|
||||
if (instance != null) return instance;
|
||||
|
||||
instance = CreateInstance<ATConfigAsset2>();
|
||||
AssetDatabase.CreateAsset(instance, settingsFilePath);
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
[SerializeField] SerializableDictionary<string, string> installedNetworkVersion = new SerializableDictionary<string, string>();
|
||||
// [SerializeField] string installedNetworkVersionJson = string.Empty;
|
||||
[SerializeField] int localCountry = 1;
|
||||
|
||||
public int LocalCountry
|
||||
{
|
||||
get { return Instance.localCountry; }
|
||||
set { Instance.localCountry = value; }
|
||||
}
|
||||
|
||||
public void saveInstalledNetworkVersion(string key, string version)
|
||||
{
|
||||
Instance.installedNetworkVersion[key] = version;
|
||||
}
|
||||
|
||||
public void removeInstalledNetworkVersion(string key)
|
||||
{
|
||||
if (Instance.installedNetworkVersion.ContainsKey(key)) {
|
||||
Instance.installedNetworkVersion.Remove(key);
|
||||
}
|
||||
}
|
||||
|
||||
public string getInstalledNetworkVersion(string key)
|
||||
{
|
||||
if (Instance.installedNetworkVersion.ContainsKey(key)) {
|
||||
return Instance.installedNetworkVersion[key];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public void SaveAsync()
|
||||
{
|
||||
EditorUtility.SetDirty(instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,9 +12,6 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
{
|
||||
public class ATDataUtil
|
||||
{
|
||||
// private static string LAST_SELECT_COUNTRY_KEY = "country_key"; //当前选择的country
|
||||
// public static Network[] chinaNetworks;
|
||||
// public static Network[] nonChinaNetworks;
|
||||
|
||||
public static Network coreNetwork;
|
||||
|
||||
@@ -26,21 +23,69 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
bool isChinaCountry = isChina(country);
|
||||
|
||||
ServerNetworks serverNetworks = JsonUtility.FromJson<ServerNetworks>(netowrksJson);
|
||||
|
||||
Network network = pluginData.anyThink;
|
||||
if (network == null) {
|
||||
return null;
|
||||
}
|
||||
var android_version = pluginData.requestParams.androidVersion;
|
||||
var ios_version = pluginData.requestParams.iosVersion;
|
||||
|
||||
var androidSdkVersionList = serverNetworks.android_sdk;
|
||||
var iosSdkVersionList = serverNetworks.ios_sdk;
|
||||
|
||||
ServerNetworkSdk androidNeworkSdk = null;
|
||||
if (!string.IsNullOrEmpty(android_version)) {
|
||||
foreach(ServerNetworkSdk sdk in androidSdkVersionList) {
|
||||
if (Equals(sdk.version, android_version)) {
|
||||
androidNeworkSdk = sdk;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ServerNetworkSdk iosNeworkSdk = null;
|
||||
if (!string.IsNullOrEmpty(ios_version)) {
|
||||
foreach(ServerNetworkSdk sdk in iosSdkVersionList) {
|
||||
if (Equals(sdk.version, ios_version)) {
|
||||
iosNeworkSdk = sdk;
|
||||
}
|
||||
}
|
||||
}
|
||||
ATLog.log("parseNetworksJson() >>> androidNeworkSdk: " + androidNeworkSdk + " iosNeworkSdk: " + iosNeworkSdk);
|
||||
|
||||
ServerNetworkInfo[] serverNetworkInfoList;
|
||||
Network[] networks;
|
||||
if (isChinaCountry)
|
||||
{
|
||||
serverNetworkInfoList = serverNetworks.ChinaSdk;
|
||||
networks = formatServerNetworks(pluginData, country, serverNetworkInfoList);
|
||||
// networks = chinaNetworks;
|
||||
Network[] networks = mergeAndroidIosNetworks(getServerNetworkInfo(isChinaCountry, androidNeworkSdk, ATConfig.OS_ANDROID), getServerNetworkInfo(isChinaCountry, iosNeworkSdk, ATConfig.OS_IOS));
|
||||
Array.Sort(networks);
|
||||
ATLog.log("parseNetworksJson() >>> networks.Length: " + networks.Length);
|
||||
//处理本地已安装过的Core和Network数据
|
||||
var countrySettingData = pluginData.pluginSettingData.getCountrySettingData();
|
||||
|
||||
List<Network> networkList = new List<Network>();
|
||||
foreach(var item in networks) {
|
||||
if (Equals(item.Name, ATIntegrationManager.AnyThinkNetworkName)) {
|
||||
network.Name = item.Name;
|
||||
network.DisplayName = item.DisplayName;
|
||||
network.AndroidDownloadUrl = item.AndroidDownloadUrl;
|
||||
network.iOSDownloadloadUrl = item.iOSDownloadloadUrl;
|
||||
network.PluginFileName = item.PluginFileName;
|
||||
//本地是否有安装core
|
||||
var version = network.CurrentVersions;
|
||||
if (version == null) {
|
||||
version = new Versions();
|
||||
}
|
||||
version.Android = countrySettingData.android_version;
|
||||
version.Ios = countrySettingData.ios_version;
|
||||
network.CurrentVersions = version;
|
||||
network.LatestVersions = item.LatestVersions;
|
||||
} else {
|
||||
// ATLog.log("parseNetworksJson() >>> lastAndroidVersion: " + item.LatestVersions.Android + " lastIosVerion: " + item.LatestVersions.Ios);
|
||||
//本地是否有安装network
|
||||
ATConfig.initNetworkLocalData(item);
|
||||
networkList.Add(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
serverNetworkInfoList = serverNetworks.GlobalSdk;
|
||||
networks = formatServerNetworks(pluginData, country, serverNetworkInfoList);
|
||||
// networks = nonChinaNetworks;
|
||||
}
|
||||
return networks;
|
||||
|
||||
return networkList.ToArray();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -58,12 +103,21 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
try
|
||||
{
|
||||
var pluginData = new PluginData();
|
||||
// var anythink = new Network();
|
||||
|
||||
ServerPluginVersion serverPluginVersion = JsonUtility.FromJson<ServerPluginVersion>(serverPluginVersionJson);
|
||||
pluginData.networkUrlVersion = serverPluginVersion.networkUrlVersion;
|
||||
pluginData.country = ATConfig.getLocalCountry();
|
||||
// pluginData.country = 1;
|
||||
|
||||
pluginData.androidVersions = serverPluginVersion.android_versions;
|
||||
pluginData.iosVersions = serverPluginVersion.ios_versions;
|
||||
pluginData.pluginVersion = serverPluginVersion.pluginVersion;
|
||||
// 初始化本地的core包数据
|
||||
var settingData = ATConfig.getPluginSettingData();
|
||||
if (settingData == null) {
|
||||
settingData = new PluginSettingData();
|
||||
ATConfig.savePluginSettingData(settingData);
|
||||
}
|
||||
pluginData.country = settingData.curCountry;
|
||||
pluginData.pluginSettingData = settingData;
|
||||
pluginData.anyThink = initCoreNetworkWithLocalData(settingData);
|
||||
return pluginData;
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -75,209 +129,129 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Network[] formatServerNetworks(PluginData pluginData, int country, ServerNetworkInfo[] networkInfoList)
|
||||
{
|
||||
if (networkInfoList == null || networkInfoList.Length == 0)
|
||||
{
|
||||
return null;
|
||||
public static Network initCoreNetworkWithLocalData(PluginSettingData settingData) {
|
||||
var network = new Network();
|
||||
var versions = new Versions();
|
||||
var countryData = settingData.getCountrySettingData();
|
||||
if (countryData != null) {
|
||||
versions.Android = countryData.android_version;
|
||||
versions.Ios = countryData.ios_version;
|
||||
}
|
||||
int length = networkInfoList.Length;
|
||||
List<Network> networkList = new List<Network>();
|
||||
|
||||
for (int i = 0; i < length; i++)
|
||||
{
|
||||
Network network = new Network();
|
||||
ServerNetworkInfo serverInfo = networkInfoList[i];
|
||||
network.Name = serverInfo.name;
|
||||
network.DisplayName = serverInfo.displayName;
|
||||
network.DownloadUrl = serverInfo.downloadUrl;
|
||||
network.PluginFileName = serverInfo.pluginFileName;
|
||||
Versions latestVersion = new Versions();
|
||||
ServerNetworkVersion serverVersion = serverInfo.versions;
|
||||
if (serverVersion != null)
|
||||
{
|
||||
latestVersion.Android = serverVersion.android;
|
||||
latestVersion.Ios = serverVersion.ios;
|
||||
latestVersion.Unity = serverVersion.unity;
|
||||
}
|
||||
network.LatestVersions = latestVersion;
|
||||
|
||||
networkList.Add(network);
|
||||
}
|
||||
Network coreNetwork = networkList.First<Network>(n => n.Name.Equals(ATIntegrationManager.AnyThinkNetworkName));
|
||||
//先初始化core network
|
||||
if (coreNetwork != null)
|
||||
{
|
||||
// 获取当前已安装network的版本号
|
||||
Versions curVerions = ATConfig.getInstalledNetworkVersion(coreNetwork.Name, country);
|
||||
Versions latestVersion = coreNetwork.LatestVersions;
|
||||
if (latestVersion == null)
|
||||
{
|
||||
latestVersion = new Versions();
|
||||
}
|
||||
latestVersion.Unity = pluginData.pluginVersion;
|
||||
coreNetwork.LatestVersions = latestVersion;
|
||||
ATLog.log("coreNetwork latestVersion: " + latestVersion + " curVerions: " + curVerions);
|
||||
if (curVerions != null)
|
||||
{
|
||||
coreNetwork.CurrentVersions = curVerions;
|
||||
coreNetwork.CurrentToLatestVersionComparisonResult = getVersionComparisonResult(curVerions, latestVersion, false);
|
||||
}
|
||||
|
||||
ATPluginSetting.Instance.CoreNetwork = coreNetwork;
|
||||
}
|
||||
networkList.Remove(coreNetwork);
|
||||
//后初始化network
|
||||
foreach (var network in networkList)
|
||||
{
|
||||
Versions curVerion = ATConfig.getInstalledNetworkVersion(network.Name, country);
|
||||
network.CurrentVersions = curVerion;
|
||||
VersionComparisonResult result = getVersionComparisonResult(curVerion, network.LatestVersions, true);
|
||||
ATLog.log("formatServerNetworks() >>> compareResult: " + result);
|
||||
network.CurrentToLatestVersionComparisonResult = result;
|
||||
}
|
||||
|
||||
Network[] networks = (Network[])networkList.ToArray();
|
||||
//排序
|
||||
Array.Sort(networks);
|
||||
return networks;
|
||||
network.CurrentVersions = versions;
|
||||
network.Country = settingData.curCountry;
|
||||
return network;
|
||||
}
|
||||
|
||||
// public bool isChina()
|
||||
// {
|
||||
// int result = EditorPrefs.GetInt(LAST_SELECT_COUNTRY_KEY, 1);
|
||||
// return result == 1;
|
||||
// }
|
||||
public static ServerNetworkInfo[] getServerNetworkInfo(bool isChina, ServerNetworkSdk serverNetworks, int os) {
|
||||
if (serverNetworks == null) {
|
||||
return null;
|
||||
}
|
||||
if (isChina) {
|
||||
return serverNetworks.network_list.china;
|
||||
} else {
|
||||
return serverNetworks.network_list.nonchina;
|
||||
}
|
||||
}
|
||||
|
||||
private static IEnumerable<ServerNetworkInfo> GetUniqueNetworkInfo(ServerNetworkInfo[] androidNetworks, ServerNetworkInfo[] iosNetworks)
|
||||
{
|
||||
// Android独有的
|
||||
var uniqueToAndroid = androidNetworks.Where(a => !iosNetworks.Any(i => i.name == a.name));
|
||||
|
||||
// iOS独有的
|
||||
var uniqueToIos = iosNetworks.Where(i => !androidNetworks.Any(a => a.name == i.name));
|
||||
|
||||
// 合并结果
|
||||
return uniqueToAndroid.Concat(uniqueToIos);
|
||||
}
|
||||
|
||||
//合并Android和iOS的network数据
|
||||
public static Network[] mergeAndroidIosNetworks(ServerNetworkInfo[] androidNetworks, ServerNetworkInfo[] iosNetworks)
|
||||
{
|
||||
int a_length = 0;
|
||||
int i_length = 0;
|
||||
if (androidNetworks != null) {
|
||||
a_length = androidNetworks.Length;
|
||||
}
|
||||
if (iosNetworks != null) {
|
||||
i_length = iosNetworks.Length;
|
||||
}
|
||||
ATLog.log("mergeAndroidIosNetworks() >>> a_length: " + a_length + " i_length: " + i_length);
|
||||
|
||||
int max_length = Math.Max(a_length, i_length);
|
||||
int min_length = Math.Min(a_length, i_length);
|
||||
|
||||
var externalNetworks = androidNetworks;
|
||||
var internalNetworks = iosNetworks;
|
||||
if (a_length < i_length) {
|
||||
externalNetworks = iosNetworks;
|
||||
internalNetworks = androidNetworks;
|
||||
}
|
||||
|
||||
List<Network> networkList = new List<Network>();
|
||||
ATLog.log("mergeAndroidIosNetworks() >>> max_length: " + max_length + " min_length: " + min_length);
|
||||
for (int i = 0; i < max_length; i++) {
|
||||
var network = new Network();
|
||||
var iNetwork = externalNetworks[i];
|
||||
if (min_length == 0) {
|
||||
//只有集成一个平台
|
||||
network = flatServerNetwork(iNetwork, network);
|
||||
networkList.Add(network);
|
||||
} else {
|
||||
//合并相同的network
|
||||
for (int j = 0; j < min_length; j++) {
|
||||
var jNetwork = internalNetworks[j];
|
||||
if (Equals(iNetwork.name, jNetwork.name)) {
|
||||
network = flatServerNetwork(iNetwork, network);
|
||||
network = flatServerNetwork(jNetwork, network);
|
||||
networkList.Add(network);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//过滤平台的唯一network
|
||||
if (i_length > 0 && a_length > 0) {
|
||||
var serverNetworkInfos = GetUniqueNetworkInfo(androidNetworks, iosNetworks);
|
||||
foreach (var serverNetworkInfo in serverNetworkInfos)
|
||||
{
|
||||
var network = new Network();
|
||||
networkList.Add(flatServerNetwork(serverNetworkInfo, network));
|
||||
}
|
||||
}
|
||||
|
||||
return networkList.ToArray();
|
||||
}
|
||||
|
||||
//后台下载数据转换成本地数据
|
||||
public static Network flatServerNetwork(ServerNetworkInfo serverInfo, Network network)
|
||||
{
|
||||
network.Name = serverInfo.name;
|
||||
network.DisplayName = serverInfo.displayName;
|
||||
network.Country = serverInfo.country;
|
||||
network.PluginFileName = serverInfo.pluginFileName;
|
||||
|
||||
var versions = network.LatestVersions;
|
||||
if (versions == null) {
|
||||
versions = new Versions();
|
||||
}
|
||||
if (serverInfo.os == ATConfig.OS_ANDROID) { //Android
|
||||
network.AndroidDownloadUrl = serverInfo.downloadUrl;
|
||||
versions.Android = serverInfo.version;
|
||||
} else { //iOS
|
||||
network.iOSDownloadloadUrl = serverInfo.downloadUrl;
|
||||
versions.Ios = serverInfo.version;
|
||||
}
|
||||
ATLog.log("flatServerNetwork() >>> name: " + network.Name + " androidVersion: " + versions.Android + " iosVersion: " + versions.Ios);
|
||||
network.LatestVersions = versions;
|
||||
return network;
|
||||
}
|
||||
|
||||
public static bool isChina(int country)
|
||||
{
|
||||
return country == ATConfig.CHINA_COUNTRY;
|
||||
}
|
||||
|
||||
public static VersionComparisonResult getVersionComparisonResult(Versions curVersion, Versions latestVersion, bool isNetwork = false)
|
||||
{
|
||||
if (curVersion == null || latestVersion == null)
|
||||
{
|
||||
return VersionComparisonResult.Equal;
|
||||
}
|
||||
string curUnity = curVersion.Unity;
|
||||
string latestUnity = latestVersion.Unity;
|
||||
string curAndroid = curVersion.Android;
|
||||
string latestAndroid = latestVersion.Android;
|
||||
string curIos = curVersion.Ios;
|
||||
string latestIos = latestVersion.Ios;
|
||||
|
||||
VersionComparisonResult compareVersionResult = VersionComparisonResult.Equal;
|
||||
if (isNetwork)
|
||||
{
|
||||
if (string.IsNullOrEmpty(curUnity) || string.IsNullOrEmpty(latestUnity))
|
||||
{
|
||||
return VersionComparisonResult.Equal;
|
||||
}
|
||||
compareVersionResult = CompareUnityMediationVersions(curVersion.Unity, latestVersion.Unity);
|
||||
}
|
||||
else
|
||||
{
|
||||
var unityVersionComparison = CompareVersions(curUnity, latestUnity);
|
||||
var androidVersionComparison = CompareVersions(curAndroid, latestAndroid);
|
||||
var iosVersionComparison = CompareVersions(curIos, latestIos);
|
||||
|
||||
if (unityVersionComparison == VersionComparisonResult.Equal &&
|
||||
androidVersionComparison == VersionComparisonResult.Equal &&
|
||||
iosVersionComparison == VersionComparisonResult.Equal)
|
||||
{
|
||||
compareVersionResult = VersionComparisonResult.Equal;
|
||||
}
|
||||
else if (unityVersionComparison == VersionComparisonResult.Lesser ||
|
||||
androidVersionComparison == VersionComparisonResult.Lesser ||
|
||||
iosVersionComparison == VersionComparisonResult.Lesser)
|
||||
{
|
||||
compareVersionResult = VersionComparisonResult.Lesser;
|
||||
}
|
||||
else
|
||||
{
|
||||
compareVersionResult = VersionComparisonResult.Greater;
|
||||
}
|
||||
}
|
||||
return compareVersionResult;
|
||||
}
|
||||
|
||||
// public static long compareVersionToInt(string currentVersion, string currentNewVersion)
|
||||
// {
|
||||
// if (currentVersion == null || currentVersion.Length == 0
|
||||
// || currentNewVersion == null || currentNewVersion.Length == 0)
|
||||
// {
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// ATLog.log("compareVersionToInt() >>> before curVersion: " + currentVersion + " curNewVersion: " + currentNewVersion);
|
||||
// string curVersion = currentVersion.Replace(".", "").Replace("_", "").Replace("android", "").Replace("ios", "").Replace(" ", "");
|
||||
// string curNewVersion = currentNewVersion.Replace(".", "").Replace("_", "").Replace("android", "").Replace("ios", "").Replace(" ", "");
|
||||
// ATLog.log("compareVersionToInt() >>> after curVersion: " + curVersion + " curNewVersion: " + curNewVersion);
|
||||
// long intCurVersion = long.Parse(curVersion);
|
||||
// long intNewVersion = long.Parse(curNewVersion);
|
||||
// return intNewVersion - intCurVersion;
|
||||
// }
|
||||
|
||||
//比较Unity集成的版本
|
||||
public static VersionComparisonResult CompareUnityMediationVersions(string versionA, string versionB)
|
||||
{
|
||||
if (versionA.Equals(versionB)) return VersionComparisonResult.Equal;
|
||||
|
||||
// Unity version would be of format: android_w.x.y.z_ios_a.b.c.d
|
||||
// For Android only versions it would be: android_w.x.y.z
|
||||
// For iOS only version it would be: ios_a.b.c.d
|
||||
|
||||
// After splitting into their respective components, the versions would be at the odd indices.
|
||||
var versionAComponents = versionA.Split('_').ToList();
|
||||
var versionBComponents = versionB.Split('_').ToList();
|
||||
|
||||
var androidComparison = VersionComparisonResult.Equal;
|
||||
if (versionA.Contains("android") && versionB.Contains("android"))
|
||||
{
|
||||
var androidVersionA = versionAComponents[1];
|
||||
var androidVersionB = versionBComponents[1];
|
||||
androidComparison = CompareVersions(androidVersionA, androidVersionB);
|
||||
|
||||
// Remove the Android version component so that iOS versions can be processed.
|
||||
versionAComponents.RemoveRange(0, 2);
|
||||
versionBComponents.RemoveRange(0, 2);
|
||||
}
|
||||
else if (versionA.Contains("android"))
|
||||
{
|
||||
androidComparison = VersionComparisonResult.Greater;
|
||||
|
||||
// Remove the Android version component so that iOS versions can be processed.
|
||||
versionAComponents.RemoveRange(0, 2);
|
||||
}
|
||||
else if (versionB.Contains("android"))
|
||||
{
|
||||
androidComparison = VersionComparisonResult.Lesser;
|
||||
|
||||
// Remove the Android version component so that iOS version can be processed.
|
||||
versionBComponents.RemoveRange(0, 2);
|
||||
}
|
||||
|
||||
var iosComparison = VersionComparisonResult.Equal;
|
||||
if (versionA.Contains("ios") && versionB.Contains("ios"))
|
||||
{
|
||||
var iosVersionA = versionAComponents[1];
|
||||
var iosVersionB = versionBComponents[1];
|
||||
iosComparison = CompareVersions(iosVersionA, iosVersionB);
|
||||
}
|
||||
else if (versionA.Contains("ios"))
|
||||
{
|
||||
iosComparison = VersionComparisonResult.Greater;
|
||||
}
|
||||
else if (versionB.Contains("ios"))
|
||||
{
|
||||
iosComparison = VersionComparisonResult.Lesser;
|
||||
}
|
||||
|
||||
|
||||
// If either one of the Android or iOS version is greater, the entire version should be greater.
|
||||
return (androidComparison == VersionComparisonResult.Greater || iosComparison == VersionComparisonResult.Greater) ? VersionComparisonResult.Greater : VersionComparisonResult.Lesser;
|
||||
}
|
||||
//只比较Android、iOS
|
||||
public static VersionComparisonResult CompareVersions(string versionA, string versionB)
|
||||
{
|
||||
@@ -286,22 +260,6 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
return VersionComparisonResult.Equal;
|
||||
}
|
||||
|
||||
// var versionAComponents = versionA.Replace(".", "");
|
||||
// var versionBComponents = versionB.Replace(".", "");
|
||||
// var charArrayA = versionAComponents.ToCharArray();
|
||||
// var charArrayB = versionBComponents.ToCharArray();
|
||||
|
||||
// for(var i = 0; i < charArrayA.Length; i++)
|
||||
// {
|
||||
// var aVersion = 0;
|
||||
// int.TryParse(charArrayA[i].ToString(), out aVersion);
|
||||
// var bVersion = 0;
|
||||
// int.TryParse(charArrayB[i].ToString(), out bVersion);
|
||||
|
||||
// if (aVersion < bVersion) return VersionComparisonResult.Lesser;
|
||||
// if (aVersion > bVersion) return VersionComparisonResult.Greater;
|
||||
// }
|
||||
|
||||
try
|
||||
{
|
||||
var aVersionArrays = versionA.Split('.');
|
||||
@@ -338,47 +296,43 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
ATLog.logError("CompareVersions failed: " + e.Message);
|
||||
}
|
||||
|
||||
// // Split the version string into beta component and the underlying version.
|
||||
// int piece;
|
||||
|
||||
// // Compare the non beta component of the version string.
|
||||
// var versionAComponents = versionA.Split('.').Select(version => int.TryParse(version, out piece) ? piece : 0).ToArray();
|
||||
// var versionBComponents = versionB.Split('.').Select(version => int.TryParse(version, out piece) ? piece : 0).ToArray();
|
||||
// var length = Mathf.Max(versionAComponents.Length, versionBComponents.Length);
|
||||
// for (var i = 0; i < length; i++)
|
||||
// {
|
||||
// var aComponent = i < versionAComponents.Length ? versionAComponents[i] : 0;
|
||||
// var bComponent = i < versionBComponents.Length ? versionBComponents[i] : 0;
|
||||
|
||||
// if (aComponent < bComponent) return VersionComparisonResult.Lesser;
|
||||
|
||||
// if (aComponent > bComponent) return VersionComparisonResult.Greater;
|
||||
// }
|
||||
|
||||
return VersionComparisonResult.Equal;
|
||||
}
|
||||
}
|
||||
|
||||
//后端下发的Plugin、android、iOS版本号
|
||||
//下发的插件数据:{"pluginVersion": "2.1.0", "platformName": "AnyThink", "ios_versions": ["6.2.88"], "android_versions": ["6.2.93"]}
|
||||
[Serializable]
|
||||
public class ServerPluginVersion
|
||||
{
|
||||
public string platformName;
|
||||
public string networkUrlVersion;
|
||||
// public string networkUrlVersion;
|
||||
public string pluginVersion;
|
||||
public string androidVersion;
|
||||
public string iosVersion;
|
||||
public string[] versionList;
|
||||
public string[] android_versions;
|
||||
public string[] ios_versions;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ServerNetworks
|
||||
{
|
||||
public ServerNetworkInfo[] GlobalSdk;
|
||||
public ServerNetworkInfo[] ChinaSdk;
|
||||
public string platformName;
|
||||
public string version;
|
||||
public string plugin_version;
|
||||
public ServerNetworkSdk[] ios_sdk;
|
||||
public ServerNetworkSdk[] android_sdk;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ServerNetworkSdk
|
||||
{
|
||||
public string version;
|
||||
public ServerNetworkListObj network_list;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ServerNetworkListObj
|
||||
{
|
||||
public ServerNetworkInfo[] china;
|
||||
public ServerNetworkInfo[] nonchina;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ServerNetworkInfo
|
||||
{
|
||||
@@ -386,7 +340,10 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
public string displayName;
|
||||
public string downloadUrl;
|
||||
public string pluginFileName;
|
||||
public ServerNetworkVersion versions;
|
||||
public string version;
|
||||
public int os;
|
||||
public int country;
|
||||
// public ServerNetworkVersion versions;
|
||||
}
|
||||
[Serializable]
|
||||
public class ServerNetworkVersion
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 576fff4f2b7dd423684961e90cf9e6d5
|
||||
guid: ca6f64ad482de4a5aa184f487313de57
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e94dc3c256ae4d7b93f6dc4d2fe1b72
|
||||
guid: 95bc78f07c0814a968d38ba189ba7ed4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bd7ab13837946459a934fb64b4a54f7b
|
||||
guid: 1c2384eee7cf4456e9d116ab275c07b5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -11,6 +11,8 @@ using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
using UnityEditor.PackageManager.Requests;
|
||||
using UnityEditor.PackageManager;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading;
|
||||
|
||||
namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
{
|
||||
@@ -18,15 +20,13 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
{
|
||||
public static ATIntegrationManager Instance = new ATIntegrationManager();
|
||||
|
||||
private UnityWebRequest downloadPluginRequest;
|
||||
// private UnityWebRequest downloadPluginRequest;
|
||||
|
||||
private const string AnyThinkAds = "AnyThinkAds";
|
||||
//AnyThink的unity插件
|
||||
public static string AnyThinkNetworkName = "Core";
|
||||
private const string ATSdkAssetExportPath = "AnyThinkAds/Script/";
|
||||
public static readonly string GradleTemplatePath = Path.Combine("Assets/Plugins/Android", "mainTemplate.gradle");
|
||||
public static readonly string DefaultPluginExportPath = Path.Combine("Assets", AnyThinkAds);
|
||||
|
||||
private PluginData mPluginData;
|
||||
|
||||
private ATIntegrationManager()
|
||||
{
|
||||
@@ -35,57 +35,14 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
|
||||
public void CancelDownload()
|
||||
{
|
||||
if (downloadPluginRequest == null) return;
|
||||
// if (downloadPluginRequest == null) return;
|
||||
|
||||
downloadPluginRequest.Abort();
|
||||
}
|
||||
|
||||
public IEnumerator loadNetworksData(PluginData pluginData, Action<PluginData> callback)
|
||||
{
|
||||
if (pluginData == null)
|
||||
{
|
||||
callback(null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var networksRequest = UnityWebRequest.Get(ATNetInfo.getNetworkListUrl(pluginData.networkUrlVersion));
|
||||
var webRequest = networksRequest.SendWebRequest();
|
||||
while (!webRequest.isDone)
|
||||
{
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
}
|
||||
|
||||
#if UNITY_2020_1_OR_NEWER
|
||||
if (networksRequest.result != UnityWebRequest.Result.Success)
|
||||
#elif UNITY_2017_2_OR_NEWER
|
||||
if (networksRequest.isNetworkError || networksRequest.isHttpError)
|
||||
#else
|
||||
if (networksRequest.isError)
|
||||
#endif
|
||||
{
|
||||
Debug.Log("loadNetworksData failed.");
|
||||
callback(pluginData);
|
||||
}
|
||||
else
|
||||
{
|
||||
//解析network列表的版本数据
|
||||
string netowrksJson = networksRequest.downloadHandler.text;
|
||||
pluginData.mediatedNetworks = ATDataUtil.parseNetworksJson(pluginData, netowrksJson);
|
||||
//初始化AnyThink的core network
|
||||
Network coreNetwork = ATPluginSetting.Instance.CoreNetwork;
|
||||
if (coreNetwork != null)
|
||||
{
|
||||
pluginData.anyThink = coreNetwork;
|
||||
}
|
||||
ATLog.log("loadNetworksData() >>> mediatedNetworks: " + pluginData.mediatedNetworks);
|
||||
callback(pluginData);
|
||||
}
|
||||
}
|
||||
// downloadPluginRequest.Abort();
|
||||
}
|
||||
|
||||
public IEnumerator loadPluginData(Action<PluginData> callback)
|
||||
{
|
||||
var anythinkVersionRequest = UnityWebRequest.Get(ATNetInfo.getPluginConfigUrl());
|
||||
var anythinkVersionRequest = UnityWebRequest.Get(ATNetInfo.getPluginConfigUrl(ATConfig.PLUGIN_VERSION));
|
||||
var webRequest = anythinkVersionRequest.SendWebRequest();
|
||||
while (!webRequest.isDone)
|
||||
{
|
||||
@@ -108,60 +65,55 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
//解析Anythink的版本数据
|
||||
string anythinkVersionJson = anythinkVersionRequest.downloadHandler.text;
|
||||
PluginData pluginData = ATDataUtil.parsePluginDataJson(anythinkVersionJson);
|
||||
Debug.Log("loadPluginData succeed. country: " + pluginData.country);
|
||||
Debug.Log("loadPluginData succeed. country: " + pluginData.country + " androidVersions: "
|
||||
+ pluginData.androidVersions + " iosVersions: " + pluginData.iosVersions);
|
||||
mPluginData = pluginData;
|
||||
callback(pluginData);
|
||||
}
|
||||
}
|
||||
|
||||
//默认下载core包,在下载完network的数据时。
|
||||
public void downloadCorePlugin(PluginData pluginData)
|
||||
public IEnumerator loadNetworksData(PluginData pluginData, Action<PluginData> callback)
|
||||
{
|
||||
Network network = pluginData.anyThink;
|
||||
int country = pluginData.country;
|
||||
|
||||
if (network == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ATLog.log("downloadCorePlugin() >>> networkName: " + network.Name + " country: " + country);
|
||||
bool isInstalled = ATConfig.isNetworkInstalled(network.Name, country);
|
||||
ATLog.log("downloadCorePlugin() >>> isInstalled: " + isInstalled);
|
||||
if (!isInstalled)
|
||||
{
|
||||
downloadPlugin(network);
|
||||
// ATEditorCoroutine.startCoroutine(downloadPluginWithEnumerator(network, false));
|
||||
} else {
|
||||
handlerVersionAdapter(pluginData);
|
||||
}
|
||||
}
|
||||
|
||||
public void networkInstallOrUpdate(PluginData pluginData, Network network)
|
||||
{
|
||||
bool uninstall = true;
|
||||
if (pluginData != null)
|
||||
Network network = pluginData.anyThink;
|
||||
if (pluginData == null)
|
||||
{
|
||||
Network coreNetwork = pluginData.anyThink;
|
||||
if (coreNetwork != null)
|
||||
{
|
||||
if (coreNetwork.isReqiureUpdate()) //network有更新,并且core包也有更新,则更新core包,然后core包更新完,会自动去更新全部network
|
||||
{
|
||||
uninstall = false;
|
||||
network = coreNetwork;
|
||||
}
|
||||
}
|
||||
callback(null);
|
||||
}
|
||||
int country = ATConfig.getLocalCountry();
|
||||
if (ATConfig.isNetworkInstalled(network.Name, country))
|
||||
{
|
||||
if (uninstall)
|
||||
{
|
||||
uninstallNetwork(network, country);
|
||||
}
|
||||
downloadPlugin(network);
|
||||
else if (pluginData.requestParams == null) {
|
||||
ATLog.log("loadNetworksData() >>> pluginData.requestParams is null");
|
||||
callback(pluginData);
|
||||
}
|
||||
else
|
||||
{
|
||||
downloadPlugin(network);
|
||||
var networksRequest = UnityWebRequest.Get(ATNetInfo.getNetworkListUrl(ATConfig.PLUGIN_VERSION));
|
||||
var webRequest = networksRequest.SendWebRequest();
|
||||
while (!webRequest.isDone)
|
||||
{
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
}
|
||||
|
||||
#if UNITY_2020_1_OR_NEWER
|
||||
if (networksRequest.result != UnityWebRequest.Result.Success)
|
||||
#elif UNITY_2017_2_OR_NEWER
|
||||
if (networksRequest.isNetworkError || networksRequest.isHttpError)
|
||||
#else
|
||||
if (networksRequest.isError)
|
||||
#endif
|
||||
{
|
||||
Debug.Log("loadNetworksData failed.");
|
||||
callback(pluginData);
|
||||
}
|
||||
else
|
||||
{
|
||||
//解析network列表的版本数据
|
||||
string netowrksJson = networksRequest.downloadHandler.text;
|
||||
ATLog.log("loadNetworksData() >>> netowrksJson: " + netowrksJson);
|
||||
pluginData.mediatedNetworks = ATDataUtil.parseNetworksJson(pluginData, netowrksJson);
|
||||
ATLog.log("loadNetworksData() >>> mediatedNetworks: " + pluginData.mediatedNetworks);
|
||||
mPluginData = pluginData;
|
||||
callback(pluginData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,28 +123,32 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
/// <param name="network">Network for which to download the current version.</param>
|
||||
/// <param name="showImport">Whether or not to show the import window when downloading. Defaults to <c>true</c>.</param>
|
||||
/// <returns></returns>
|
||||
public void downloadPlugin(Network network, bool showImport = true)
|
||||
public void downloadPlugin(Network network, int os =1, bool showImport = false)
|
||||
{
|
||||
ATEditorCoroutine.startCoroutine(downloadPluginWithEnumerator(network, showImport));
|
||||
ATEditorCoroutine.startCoroutine(downloadPluginWithEnumerator(network, os, showImport));
|
||||
}
|
||||
|
||||
public IEnumerator downloadPluginWithEnumerator(Network network, bool showImport = true)
|
||||
public IEnumerator downloadPluginWithEnumerator(Network network, int os, bool showImport)
|
||||
{
|
||||
ATLog.log("downloadPluginWithEnumerator() >>> network: " + network);
|
||||
if (downloadPluginRequest != null)
|
||||
{
|
||||
downloadPluginRequest.Dispose();
|
||||
}
|
||||
var path = Path.Combine(Application.temporaryCachePath, ATAssetDatabaseManager.Instance.GetPluginFileName(network));
|
||||
ATLog.log("downloadPluginWithEnumerator() >>> networkName: " + network.Name + " os: " + os);
|
||||
// if (downloadPluginRequest != null)
|
||||
// {
|
||||
// downloadPluginRequest.Dispose();
|
||||
// }
|
||||
var path = Path.Combine(Application.temporaryCachePath, network.PluginFileName);
|
||||
ATLog.log("downloadPluginWithEnumerator() >>> path: " + path);
|
||||
#if UNITY_2017_2_OR_NEWER
|
||||
var downloadHandler = new DownloadHandlerFile(path);
|
||||
#else
|
||||
var downloadHandler = new ATDownloadHandler(path);
|
||||
#endif
|
||||
downloadPluginRequest = new UnityWebRequest(network.DownloadUrl)
|
||||
var downloadUrl = network.AndroidDownloadUrl;
|
||||
if (os == ATConfig.OS_IOS)
|
||||
{
|
||||
method = UnityWebRequest.kHttpVerbGET,
|
||||
downloadUrl = network.iOSDownloadloadUrl;
|
||||
}
|
||||
UnityWebRequest downloadPluginRequest = new UnityWebRequest(downloadUrl)
|
||||
{ method = UnityWebRequest.kHttpVerbGET,
|
||||
downloadHandler = downloadHandler
|
||||
};
|
||||
|
||||
@@ -206,7 +162,8 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
yield return new WaitForSeconds(0.1f); // Just wait till downloadPluginRequest is completed. Our coroutine is pretty rudimentary.
|
||||
if (operation.progress != 1 && operation.isDone)
|
||||
{
|
||||
CallDownloadPluginProgressCallback(network.DisplayName, operation.progress, operation.isDone);
|
||||
// CallDownloadPluginProgressCallback(network.DisplayName, operation.progress, operation.isDone, os);
|
||||
UpdateCurrentVersions(network, os);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,273 +179,270 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
}
|
||||
else
|
||||
{
|
||||
CallDownloadPluginProgressCallback(network.DisplayName, 1, true);
|
||||
// importingNetwork = network;
|
||||
ATAssetDatabaseManager.Instance.importingNetwork = network;
|
||||
AssetDatabase.Refresh();
|
||||
AssetDatabase.ImportPackage(path, showImport);
|
||||
UpdateCurrentVersions(network, os);
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
downloadPluginRequest.Dispose();
|
||||
downloadPluginRequest = null;
|
||||
}
|
||||
|
||||
private static void CallDownloadPluginProgressCallback(string pluginName, float progress, bool isDone)
|
||||
{
|
||||
var callback = ATAssetDatabaseManager.Instance.downloadPluginProgressCallback;
|
||||
if (callback == null) return;
|
||||
//默认下载core包,在下载完network的数据时。
|
||||
public void downloadCorePlugin(PluginData pluginData)
|
||||
{
|
||||
mPluginData = pluginData;
|
||||
var requestParams = pluginData.requestParams;
|
||||
var pluginSettingData = pluginData.pluginSettingData;
|
||||
|
||||
callback(pluginName, progress, isDone);
|
||||
bool isIosInstalled = ATConfig.isCoreNetworkInstalled(pluginSettingData, ATConfig.OS_IOS);
|
||||
bool isAndroidInstalled = ATConfig.isCoreNetworkInstalled(pluginSettingData, ATConfig.OS_ANDROID);
|
||||
ATLog.log("downloadCorePlugin() >>> isIosInstalled: " + isIosInstalled + " isAndroidInstalled: " + isAndroidInstalled);
|
||||
|
||||
Network network = pluginData.anyThink;
|
||||
int os = requestParams.os;
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
if (!isAndroidInstalled) {
|
||||
downloadPlugin(network, os);
|
||||
} else {
|
||||
//判断是否需要切换SDK
|
||||
var latestVersions = network.LatestVersions;
|
||||
var curVersion = network.CurrentVersions;
|
||||
if (latestVersions.Android != curVersion.Android) {
|
||||
//先删除掉core包
|
||||
ATConfig.removeSdk(pluginData.country, os);
|
||||
removeNetworkVersions(pluginData, os);
|
||||
//赋值当前版本为空
|
||||
curVersion.Android = "";
|
||||
//重新下载core包
|
||||
downloadPlugin(network, os);
|
||||
//重新下载已安装的network
|
||||
redownloadNetworksPlugin(pluginData, os);
|
||||
}
|
||||
}
|
||||
} else if (os == ATConfig.OS_IOS){
|
||||
if (!isIosInstalled) {
|
||||
downloadPlugin(network, os);
|
||||
} else {
|
||||
//判断是否需要切换SDK
|
||||
var latestVersions = network.LatestVersions;
|
||||
var curVersion = network.CurrentVersions;
|
||||
if (latestVersions.Ios != curVersion.Ios) {
|
||||
//先删除掉core包
|
||||
ATConfig.removeSdk(pluginData.country, os);
|
||||
removeNetworkVersions(pluginData, os);
|
||||
//赋值当前版本为空
|
||||
curVersion.Ios = "";
|
||||
//重新下载core包
|
||||
downloadPlugin(network, os);
|
||||
//重新下载已安装的network
|
||||
redownloadNetworksPlugin(pluginData, os);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// private static void CallImportPackageCompletedCallback(Network network)
|
||||
// {
|
||||
// ATLog.log("CallImportPackageCompletedCallback() >>> network: " + network);
|
||||
// if (network != null)
|
||||
// {
|
||||
// ATConfig.saveInstalledNetworkVersion(network.Name, network.LatestVersions);
|
||||
// }
|
||||
// var callback = ATAssetDatabaseManager.Instance.importPackageCompletedCallback;
|
||||
// if (callback == null) return;
|
||||
// callback(network);
|
||||
// }
|
||||
|
||||
//更新network已安装的版本
|
||||
public void UpdateCurrentVersions(Network network)
|
||||
{
|
||||
if (network == null)
|
||||
{
|
||||
//当切换SDK版本时,需要重新下载已安装的network
|
||||
private void redownloadNetworksPlugin(PluginData pluginData, int os) {
|
||||
var mediatedNetworks = pluginData.mediatedNetworks;
|
||||
var needInstallNetworkList = new List<Network>();
|
||||
foreach(Network network in mediatedNetworks) {
|
||||
var currentVersion = network.CurrentVersions;
|
||||
if (currentVersion != null) {
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
if (!string.IsNullOrEmpty(currentVersion.Android)) {
|
||||
needInstallNetworkList.Add(network);
|
||||
}
|
||||
} else {
|
||||
if (!string.IsNullOrEmpty(currentVersion.Ios)) {
|
||||
needInstallNetworkList.Add(network);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (needInstallNetworkList.Count() == 0) {
|
||||
return;
|
||||
}
|
||||
bool isCoreNetwork = network.Name.Equals(AnyThinkNetworkName);
|
||||
Versions curVerions = ATConfig.getInstalledNetworkVersion(network.Name, ATConfig.getLocalCountry());
|
||||
network.CurrentVersions = curVerions;
|
||||
network.CurrentToLatestVersionComparisonResult = ATDataUtil.getVersionComparisonResult(curVerions, network.LatestVersions, !isCoreNetwork);
|
||||
// if (isCoreNetwork)
|
||||
// {
|
||||
// network.CurrentVersions.Unity = ATConfig.PLUGIN_VERSION;
|
||||
// }
|
||||
ATLog.log("UpdateCurrentVersions() >>> Name: " + network.Name + " latest Unity Version: " + network.LatestVersions.Unity);
|
||||
Thread.Sleep(500);
|
||||
ATEditorCoroutine.startCoroutine(UpgradeAllNetworks(needInstallNetworkList, os));
|
||||
}
|
||||
public void uninstallNetwork(Network network, int country)
|
||||
{
|
||||
foreach (var filePath in ATConfig.getNetworkFilesPath(network.Name, country))
|
||||
|
||||
private IEnumerator UpgradeAllNetworks(List<Network> networks, int os) {
|
||||
EditorApplication.LockReloadAssemblies();
|
||||
foreach (var network in networks)
|
||||
{
|
||||
if (Directory.Exists(filePath))
|
||||
{
|
||||
FileUtil.DeleteFileOrDirectory(filePath);
|
||||
|
||||
yield return downloadPluginWithEnumerator(network, os, false);
|
||||
}
|
||||
EditorApplication.UnlockReloadAssemblies();
|
||||
}
|
||||
|
||||
public void networkInstallOrUpdate(PluginData pluginData, Network network, int os)
|
||||
{
|
||||
downloadPlugin(network, os);
|
||||
}
|
||||
|
||||
//更新network已安装的版本
|
||||
private void UpdateCurrentVersions(Network network, int os)
|
||||
{
|
||||
var latestVersions = network.LatestVersions;
|
||||
var versions = network.CurrentVersions;
|
||||
if (versions == null) {
|
||||
versions = new Versions();
|
||||
}
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
versions.Android = latestVersions.Android;
|
||||
} else {
|
||||
versions.Ios = latestVersions.Ios;
|
||||
}
|
||||
network.CurrentVersions = versions;
|
||||
|
||||
// await Task.Delay(1000);
|
||||
Thread.Sleep(1000);
|
||||
//下面的逻辑会延迟一秒后执行,确保unitypackage先解压到本地
|
||||
ATConfig.saveInstalledNetworkVersion(network, os);
|
||||
ATLog.log("UpdateCurrentVersions() >>> AndroidVersion: " + versions.Android);
|
||||
//保存Core Networkde
|
||||
if (ATConfig.isCoreNetwork(network.Name)) {
|
||||
var countrySettingData = mPluginData.pluginSettingData.getCountrySettingData();
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
countrySettingData.android_version = latestVersions.Android;
|
||||
} else {
|
||||
countrySettingData.ios_version = latestVersions.Ios;
|
||||
}
|
||||
if (File.Exists(filePath + ".meta"))
|
||||
{
|
||||
FileUtil.DeleteFileOrDirectory(filePath + ".meta");
|
||||
|
||||
ATConfig.savePluginSettingData(mPluginData.pluginSettingData);
|
||||
}
|
||||
// ATLog.log("UpdateCurrentVersions() >>> Name: " + network.Name + " latest Unity Version: " + network.LatestVersions.Unity);
|
||||
}
|
||||
|
||||
//点击了界面的network删除按钮
|
||||
public void uninstallNetwork(Network network, int os)
|
||||
{
|
||||
var result = ATConfig.removeInstalledNetwork(network, os);
|
||||
if (result) {
|
||||
if (os == ATConfig.OS_ANDROID){
|
||||
network.CurrentVersions.Android = "";
|
||||
} else {
|
||||
network.CurrentVersions.Ios = "";
|
||||
}
|
||||
}
|
||||
ATConfig.removeInstalledNetworkVersion(network.Name, country);
|
||||
UpdateCurrentVersions(network);
|
||||
}
|
||||
|
||||
public void updateAnyThinkPlugin(PluginData pluginData)
|
||||
{
|
||||
Network coreNetwork = pluginData.anyThink;
|
||||
bool unityUpdate = ATDataUtil.CompareVersions(coreNetwork.CurrentVersions.Unity, pluginData.pluginVersion) == VersionComparisonResult.Lesser;
|
||||
if (unityUpdate)
|
||||
{
|
||||
Application.OpenURL(ATNetInfo.getPluginDownloadUrl(pluginData.pluginVersion));
|
||||
// ATEditorCoroutine.startCoroutine(downloadAnyThinkPlugin(pluginData.pluginVersion));
|
||||
}
|
||||
else
|
||||
{
|
||||
downloadPlugin(coreNetwork);
|
||||
}
|
||||
//切换国家
|
||||
public void switchCountry(PluginData pluginData, int country) {
|
||||
pluginData.country = country;
|
||||
|
||||
var pluginSettingData = pluginData.pluginSettingData;
|
||||
pluginSettingData.curCountry = country;
|
||||
|
||||
ATConfig.savePluginSettingData(pluginSettingData);
|
||||
}
|
||||
|
||||
public IEnumerator downloadAnyThinkPlugin(string pluginVersion)
|
||||
{
|
||||
Network network = new Network();
|
||||
network.Name = "AnyThinkPlugin";
|
||||
network.PluginFileName = ATNetInfo.getPluginFileName(pluginVersion);
|
||||
network.DownloadUrl = ATNetInfo.getPluginDownloadUrl(pluginVersion);
|
||||
//https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/Plugin/2.0.0/AnyThinkPlugin_2.0.0.unitypackage
|
||||
var path = Path.Combine(Application.temporaryCachePath, network.PluginFileName);
|
||||
ATLog.log("downloadAnyThinkPlugin() >>> path: " + path);
|
||||
#if UNITY_2017_2_OR_NEWER
|
||||
var downloadHandler = new DownloadHandlerFile(path);
|
||||
#else
|
||||
var downloadHandler = new ATDownloadHandler(path);
|
||||
#endif
|
||||
var downloadPluginRequest = new UnityWebRequest(network.DownloadUrl)
|
||||
{
|
||||
method = UnityWebRequest.kHttpVerbGET,
|
||||
downloadHandler = downloadHandler
|
||||
};
|
||||
//获取AndroidX开关状态
|
||||
public bool enableAndroidX(PluginData pluginData) {
|
||||
if (pluginData == null) {
|
||||
return false;
|
||||
}
|
||||
var pluginSettingData = pluginData.pluginSettingData;
|
||||
if (pluginSettingData == null) {
|
||||
return false;
|
||||
}
|
||||
CountrySettingData countrySettingData = pluginSettingData.getCountrySettingData();
|
||||
|
||||
#if UNITY_2017_2_OR_NEWER
|
||||
var operation = downloadPluginRequest.SendWebRequest();
|
||||
#else
|
||||
var operation = downloadPluginRequest.Send();
|
||||
#endif
|
||||
while (!operation.isDone)
|
||||
{
|
||||
yield return new WaitForSeconds(0.1f); // Just wait till downloadPluginRequest is completed. Our coroutine is pretty rudimentary.
|
||||
if (operation.progress != 1 && operation.isDone)
|
||||
{
|
||||
CallDownloadPluginProgressCallback(network.Name, operation.progress, operation.isDone);
|
||||
return countrySettingData.enableAndroidX;
|
||||
}
|
||||
|
||||
//设置并保存AndroidX开关状态
|
||||
public void saveAndroidXSetting(PluginData pluginData, bool enable) {
|
||||
ATLog.log("saveAndroidXSetting() >>> enable: " + enable);
|
||||
var pluginSettingData = pluginData.pluginSettingData;
|
||||
CountrySettingData countrySettingData = pluginSettingData.getCountrySettingData();
|
||||
countrySettingData.enableAndroidX = enable;
|
||||
|
||||
ATConfig.savePluginSettingData(pluginSettingData);
|
||||
}
|
||||
|
||||
//根据系统判断Admob是否有安装
|
||||
public bool isAdmobInstalled(int os) {
|
||||
return ATConfig.isNetworkInstalledByName("Admob", os);
|
||||
}
|
||||
|
||||
public string getAdmobAppIdByOs(PluginData pluginData, int os) {
|
||||
if (pluginData == null) {
|
||||
return "";
|
||||
}
|
||||
//android_admob_app_id
|
||||
var countrySettingData = pluginData.pluginSettingData.getCountrySettingData();
|
||||
return countrySettingData.getAdmobAppId(os);
|
||||
}
|
||||
|
||||
//设置保存Admob app id
|
||||
public void setAdmobAppidByOs(PluginData pluginData, int os, string appId) {
|
||||
if (pluginData == null || pluginData.pluginSettingData == null) {
|
||||
return;
|
||||
}
|
||||
var countrySettingData = pluginData.pluginSettingData.getCountrySettingData();
|
||||
countrySettingData.setAdmobAppId(appId, os);
|
||||
|
||||
ATConfig.savePluginSettingData(pluginData.pluginSettingData);
|
||||
}
|
||||
|
||||
//删除某个版本的SDK
|
||||
public void deleteSdk(PluginData pluginData, string sdkVersion, int os) {
|
||||
ATLog.log("deleteSdk() >>> sdkVersion: " + sdkVersion + " os: " + os);
|
||||
//删除本地文件
|
||||
ATConfig.removeSdk(pluginData.country, os);
|
||||
//修改UI显示
|
||||
removeNetworkVersions(pluginData, os, true);
|
||||
var curVersions = pluginData.anyThink.CurrentVersions;
|
||||
//修改sdk本地配置文件
|
||||
var pluginSettingData = pluginData.pluginSettingData;
|
||||
CountrySettingData countrySettingData = pluginSettingData.getCountrySettingData();
|
||||
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
curVersions.Android = "";
|
||||
countrySettingData.android_version = "";
|
||||
} else {
|
||||
curVersions.Ios = "";
|
||||
countrySettingData.ios_version = "";
|
||||
}
|
||||
|
||||
ATConfig.savePluginSettingData(pluginSettingData);
|
||||
}
|
||||
|
||||
private void removeNetworkVersions(PluginData pluginData, int os, bool isDeleteSdk = false) {
|
||||
if (isDeleteSdk) {
|
||||
var mediatedNetworks = pluginData.mediatedNetworks;
|
||||
if (mediatedNetworks != null && mediatedNetworks.Length > 0) {
|
||||
foreach(Network network in mediatedNetworks) {
|
||||
var currentVersion = network.CurrentVersions;
|
||||
if (currentVersion != null) {
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
currentVersion.Android = "";
|
||||
} else {
|
||||
currentVersion.Ios = "";
|
||||
}
|
||||
}
|
||||
var latestVersions = network.LatestVersions;
|
||||
if (latestVersions != null) {
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
latestVersions.Android = "";
|
||||
} else {
|
||||
latestVersions.Ios = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_2020_1_OR_NEWER
|
||||
if (downloadPluginRequest.result != UnityWebRequest.Result.Success)
|
||||
#elif UNITY_2017_2_OR_NEWER
|
||||
if (downloadPluginRequest.isNetworkError || downloadPluginRequest.isHttpError)
|
||||
#else
|
||||
if (downloadPluginRequest.isError)
|
||||
#endif
|
||||
{
|
||||
ATLog.logError(downloadPluginRequest.error);
|
||||
}
|
||||
else
|
||||
{
|
||||
CallDownloadPluginProgressCallback(network.Name, 1, true);
|
||||
// importingNetwork = network;
|
||||
ATAssetDatabaseManager.Instance.importingNetwork = network;
|
||||
AssetDatabase.Refresh();
|
||||
AssetDatabase.ImportPackage(path, false);
|
||||
}
|
||||
}
|
||||
//处理插件版本,pangle、csj兼容问题
|
||||
public void handlerVersionAdapter(PluginData pluginData) {
|
||||
string comparePluginVersion = "2.0.1";
|
||||
//插件版本>=2.0.1
|
||||
VersionComparisonResult comparisonResult = ATDataUtil.CompareVersions(pluginData.pluginVersion, comparePluginVersion);
|
||||
if (comparisonResult == VersionComparisonResult.Equal || comparisonResult == VersionComparisonResult.Greater) {
|
||||
Network coreNetwork = pluginData.anyThink;
|
||||
bool isChina = ATConfig.isSelectedChina();
|
||||
if (isChina) {
|
||||
//国内,Android需要把原来已安装的pangle目录删除掉,2.0.1插件后用csj作为目录
|
||||
string androidPanglePath = ATConfig.CHINA_ANDROID_NETWORK_FILES_PARENT_PATH + "pangle";
|
||||
deleteFilePath(androidPanglePath);
|
||||
NetworkRequestParams requestParams = pluginData.requestParams;
|
||||
if (requestParams == null) {
|
||||
return;
|
||||
}
|
||||
//海外,iOS需要把原来已安装的pangle_nonChina目录删除掉,2.0.1插件后用pangle作为目录
|
||||
string iOSNonChinaPanglePath = ATConfig.IOS_NETWORK_FILES_PARENT_PATH + "pangle_nonChina";
|
||||
//国内,iOS需要把原来已安装的pangle_China目录删除掉,2.0.1插件后用csj作为目录
|
||||
string iOSPanglePath = ATConfig.IOS_NETWORK_FILES_PARENT_PATH + "pangle_China";
|
||||
deleteFilePath(iOSNonChinaPanglePath);
|
||||
deleteFilePath(iOSPanglePath);
|
||||
}
|
||||
if (os == ATConfig.OS_ANDROID) { //Android
|
||||
requestParams.androidVersion = "";
|
||||
} else {
|
||||
requestParams.iosVersion = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteFilePath(string filePath) {
|
||||
if (Directory.Exists(filePath))
|
||||
{
|
||||
FileUtil.DeleteFileOrDirectory(filePath);
|
||||
}
|
||||
if (File.Exists(filePath + ".meta"))
|
||||
{
|
||||
FileUtil.DeleteFileOrDirectory(filePath + ".meta");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class PluginData
|
||||
{
|
||||
public string networkUrlVersion;
|
||||
public string pluginVersion; //插件版本
|
||||
public int country = ATConfig.CHINA_COUNTRY; //默认是1=china
|
||||
public Network anyThink;
|
||||
public Network[] mediatedNetworks;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class Network : IComparable<Network>
|
||||
{
|
||||
//
|
||||
// Sample network data:
|
||||
//
|
||||
// {
|
||||
// "Name": "adcolony",
|
||||
// "DisplayName": "AdColony",
|
||||
// "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",
|
||||
// "PluginFileName": "AppLovin-AdColony-Adapters-Android-3.3.10.1-iOS-3.3.7.2.unitypackage",
|
||||
// "DependenciesFilePath": "MaxSdk/Mediation/AdColony/Editor/Dependencies.xml",
|
||||
// "LatestVersions" : {
|
||||
// "Unity": "android_3.3.10.1_ios_3.3.7.2",
|
||||
// "Android": "3.3.10.1",
|
||||
// "Ios": "3.3.7.2"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
||||
public string Name;
|
||||
public string DisplayName;
|
||||
public string DownloadUrl;
|
||||
public string DependenciesFilePath;
|
||||
public string PluginFileName;
|
||||
public string[] PluginFilePaths;
|
||||
public Versions LatestVersions; //最新版本
|
||||
public Versions CurrentVersions; //当前版本
|
||||
[NonSerialized] public VersionComparisonResult CurrentToLatestVersionComparisonResult = VersionComparisonResult.Equal;
|
||||
// [NonSerialized] public bool RequiresUpdate = CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
|
||||
|
||||
public bool isReqiureUpdate()
|
||||
{
|
||||
return CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
|
||||
}
|
||||
|
||||
public int CompareTo(Network other)
|
||||
{
|
||||
return this.DisplayName.CompareTo(other.DisplayName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A helper data class used to get current versions from Dependency.xml files.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class Versions
|
||||
{
|
||||
|
||||
public string Unity;
|
||||
|
||||
public string Android;
|
||||
|
||||
public string Ios;
|
||||
|
||||
public override bool Equals(object value)
|
||||
{
|
||||
var versions = value as Versions;
|
||||
|
||||
return versions != null
|
||||
&& (Unity == null || Unity.Equals(versions.Unity))
|
||||
&& (Android == null || Android.Equals(versions.Android))
|
||||
&& (Ios == null || Ios.Equals(versions.Ios));
|
||||
}
|
||||
|
||||
public bool HasEqualSdkVersions(Versions versions)
|
||||
{
|
||||
return versions != null && versions.Android == Android && versions.Ios == Ios;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return new { Unity, Android, Ios }.GetHashCode();
|
||||
}
|
||||
|
||||
public Versions clone()
|
||||
{
|
||||
Versions cloneObj = new Versions();
|
||||
cloneObj.Android = Android;
|
||||
cloneObj.Ios = Ios;
|
||||
cloneObj.Unity = Unity;
|
||||
|
||||
return cloneObj;
|
||||
}
|
||||
}
|
||||
|
||||
public enum VersionComparisonResult
|
||||
{
|
||||
Lesser = -1,
|
||||
Equal = 0,
|
||||
Greater = 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca09ecd1405454636bb7d71caa70d821
|
||||
guid: 6db074a8f860d40e8b8fd6a1e459ec50
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7466442bb0ff7449d8e1f8073567eb77
|
||||
guid: 06d48237d6b6443f1b7cb368fc134467
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -5,28 +5,33 @@ using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
public class ATLog
|
||||
{
|
||||
public static void log (string msg)
|
||||
public class ATLog {
|
||||
public static bool isDebug = false;
|
||||
|
||||
public static void log(string msg)
|
||||
{
|
||||
#if AnyThinkSDKEditor
|
||||
// string msg =
|
||||
Debug.Log (msg);
|
||||
#endif
|
||||
if (isDebug) {
|
||||
Debug.Log(msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void log (string tag, string msg)
|
||||
public static void log(string tag, string msg)
|
||||
{
|
||||
Debug.Log (tag + ": " + msg);
|
||||
if (isDebug) {
|
||||
Debug.Log(tag + ": " + msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void logFormat (string msg, object[] args)
|
||||
{
|
||||
Debug.LogFormat (msg, args);
|
||||
public static void logFormat(string msg, object[] args)
|
||||
{
|
||||
if (isDebug) {
|
||||
Debug.LogFormat(msg, args);
|
||||
}
|
||||
}
|
||||
|
||||
public static void logError (string msg)
|
||||
public static void logError(string msg)
|
||||
{
|
||||
Debug.LogError (msg);
|
||||
Debug.LogError(msg);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e034a99664fd34b1fbdbcb8a6bd2b21e
|
||||
guid: 00b0a6e1f40684d3990b321d49f431b4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -7,16 +7,15 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
{
|
||||
public class AnyThinkMenuItems : MonoBehaviour
|
||||
{
|
||||
#if AnyThinkSDKEditor
|
||||
/**
|
||||
* The special characters at the end represent a shortcut for this action.
|
||||
*
|
||||
* % - ctrl on Windows, cmd on macOS
|
||||
* # - shift
|
||||
* & - alt
|
||||
*
|
||||
* So, (shift + cmd/ctrl + t) will launch the integration manager
|
||||
*/
|
||||
* The special characters at the end represent a shortcut for this action.
|
||||
*
|
||||
* % - ctrl on Windows, cmd on macOS
|
||||
* # - shift
|
||||
* & - alt
|
||||
*
|
||||
* So, (shift + cmd/ctrl + t) will launch the integration manager
|
||||
*/
|
||||
[MenuItem("AnyThink/SDK Manager %#t")]
|
||||
private static void IntegrationManager()
|
||||
{
|
||||
@@ -34,6 +33,5 @@ namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
// }
|
||||
Application.OpenURL("https://newdocs.toponad.com/docs/lgfbO4");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 839a03939354b41358303d5e308e1530
|
||||
guid: 830af66d7a0ef48aeba18a35f3626b1a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -9,36 +9,25 @@ using UnityEngine;
|
||||
namespace AnyThink.Scripts.IntegrationManager.Editor
|
||||
{
|
||||
public static class ATNetInfo {
|
||||
public static string platformName = "AnyThink";
|
||||
public static string ATDownloadDir = "Assets/AnyThinkAds/Dependencies/";
|
||||
public static string ATDependencyDir = "Assets/AnyThinkAds/Plugins/";
|
||||
public static string sdk = "sdk";
|
||||
public static string Android = "Android";
|
||||
public static string iOS = "iOS";
|
||||
public static string localConfig = "Assets/AnyThinkPlugin/Editor/localConfig.json";
|
||||
private static string unityPluginConfigUrl = "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/unity_plugin_config.json"; //插件和nythink的版本号列表
|
||||
private static string unityPluginConfigUrlDebug = "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/unity_plugin_config_debug.json"; //插件和nythink的版本号列表
|
||||
public static string packagePath = "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/";
|
||||
public static int isGlobal=1; //0:国外 //1:国内
|
||||
|
||||
public static string getPluginConfigUrl()
|
||||
//插件的配置文件:unity_plugin_config.json
|
||||
public static string getPluginConfigUrl(String plugin_version)
|
||||
{
|
||||
return ATConfig.isDebug ? unityPluginConfigUrlDebug : unityPluginConfigUrl;
|
||||
return "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity_Release/plugin/" + plugin_version + "/unity_plugin_config.json";
|
||||
}
|
||||
|
||||
public static string getNetworkListUrl(String ver)
|
||||
//插件版本对应的network列表文件:unity_plugin_config_network.json
|
||||
public static string getNetworkListUrl(String plugin_version)
|
||||
{
|
||||
return "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/"+ver+"/network_new.json";
|
||||
return "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity_Release/plugin/" + plugin_version + "/unity_plugin_config_network.json";
|
||||
}
|
||||
|
||||
//插件unitypackage名字
|
||||
public static string getPluginFileName(string pluginVersion)
|
||||
{
|
||||
return "AnyThinkPlugin_" + pluginVersion + ".unitypackage";
|
||||
}
|
||||
//https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/Plugin/2.0.0/AnyThinkPlugin_2.0.0.unitypackage
|
||||
//插件unitypackage的下载链接
|
||||
public static string getPluginDownloadUrl(string pluginVersion)
|
||||
{
|
||||
return "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity/Plugin/" + pluginVersion + "/" + getPluginFileName(pluginVersion);
|
||||
return "https://topon-sdk-release.oss-cn-hangzhou.aliyuncs.com/Unity_Release/plugin/" + pluginVersion + "/" + getPluginFileName(pluginVersion);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6b495c82aab14904a12916fb308a19f
|
||||
guid: 65fa7225327184fcdbf3ec4d235585f9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
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
|
||||
{
|
||||
[Serializable]
|
||||
public class PluginData
|
||||
{
|
||||
public string pluginVersion; //插件版本
|
||||
public string[] androidVersions;
|
||||
public string[] iosVersions;
|
||||
public int country = ATConfig.getDefCountry(); //默认是1=china
|
||||
public Network anyThink;
|
||||
public Network[] mediatedNetworks;
|
||||
public PluginSettingData pluginSettingData;
|
||||
public NetworkRequestParams requestParams;
|
||||
}
|
||||
//请求network参数
|
||||
public class NetworkRequestParams {
|
||||
public int os;
|
||||
public string androidVersion;
|
||||
public string iosVersion;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class Network : IComparable<Network>
|
||||
{
|
||||
//
|
||||
// Sample network data:
|
||||
//
|
||||
// {
|
||||
// "Name": "adcolony",
|
||||
// "DisplayName": "AdColony",
|
||||
// "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",
|
||||
// "PluginFileName": "AppLovin-AdColony-Adapters-Android-3.3.10.1-iOS-3.3.7.2.unitypackage",
|
||||
// "DependenciesFilePath": "MaxSdk/Mediation/AdColony/Editor/Dependencies.xml",
|
||||
// "LatestVersions" : {
|
||||
// "Unity": "android_3.3.10.1_ios_3.3.7.2",
|
||||
// "Android": "3.3.10.1",
|
||||
// "Ios": "3.3.7.2"
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
||||
public string Name;
|
||||
public string DisplayName;
|
||||
public string AndroidDownloadUrl;
|
||||
public string iOSDownloadloadUrl;
|
||||
// public string DependenciesFilePath;
|
||||
public string PluginFileName;
|
||||
public int Country;
|
||||
public Versions LatestVersions; //最新版本
|
||||
public Versions CurrentVersions; //当前版本
|
||||
[NonSerialized] public VersionComparisonResult CurrentToLatestVersionComparisonResult = VersionComparisonResult.Equal;
|
||||
// [NonSerialized] public bool RequiresUpdate = CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
|
||||
|
||||
public bool isVersionEmpty() {
|
||||
if (LatestVersions != null) {
|
||||
ATLog.log("isVersionEmpty() >>> name: " + Name + " android: " + LatestVersions.Android + " ios: " + LatestVersions.Ios);
|
||||
return string.IsNullOrEmpty(LatestVersions.Android) && string.IsNullOrEmpty(LatestVersions.Ios);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool isReqiureUpdate()
|
||||
{
|
||||
return CurrentToLatestVersionComparisonResult == VersionComparisonResult.Lesser;
|
||||
}
|
||||
|
||||
public int CompareTo(Network other)
|
||||
{
|
||||
return this.DisplayName.CompareTo(other.DisplayName);
|
||||
}
|
||||
|
||||
public string ToString() {
|
||||
return DisplayName + "-" + AndroidDownloadUrl + "-" + iOSDownloadloadUrl + "-" + Country;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A helper data class used to get current versions from Dependency.xml files.
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class Versions
|
||||
{
|
||||
|
||||
public string Unity;
|
||||
|
||||
public string Android;
|
||||
|
||||
public string Ios;
|
||||
|
||||
public override bool Equals(object value)
|
||||
{
|
||||
var versions = value as Versions;
|
||||
|
||||
return versions != null
|
||||
&& (Unity == null || Unity.Equals(versions.Unity))
|
||||
&& (Android == null || Android.Equals(versions.Android))
|
||||
&& (Ios == null || Ios.Equals(versions.Ios));
|
||||
}
|
||||
|
||||
public bool HasEqualSdkVersions(Versions versions)
|
||||
{
|
||||
return versions != null && versions.Android == Android && versions.Ios == Ios;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return new { Unity, Android, Ios }.GetHashCode();
|
||||
}
|
||||
|
||||
public Versions clone()
|
||||
{
|
||||
Versions cloneObj = new Versions();
|
||||
cloneObj.Android = Android;
|
||||
cloneObj.Ios = Ios;
|
||||
cloneObj.Unity = Unity;
|
||||
|
||||
return cloneObj;
|
||||
}
|
||||
}
|
||||
|
||||
public enum VersionComparisonResult
|
||||
{
|
||||
Lesser = -1,
|
||||
Equal = 0,
|
||||
Greater = 1
|
||||
}
|
||||
|
||||
//存在本地插件设置数据并序列化为json文件
|
||||
[Serializable]
|
||||
public class PluginSettingData
|
||||
{
|
||||
public int curCountry = ATConfig.getDefCountry(); //当前选择的国家
|
||||
|
||||
public CountrySettingData china = new CountrySettingData(ATConfig.CHINA_COUNTRY); //国内地区
|
||||
public CountrySettingData nonchina = new CountrySettingData(ATConfig.NONCHINA_COUNTRY); //海外地区
|
||||
|
||||
public CountrySettingData getCountrySettingData() {
|
||||
if (curCountry == ATConfig.CHINA_COUNTRY) {
|
||||
return china;
|
||||
} else {
|
||||
return nonchina;
|
||||
}
|
||||
}
|
||||
|
||||
//Android 是否同时安装了国内海外地区
|
||||
public bool isBothInstallAndroid() {
|
||||
return !string.IsNullOrEmpty(china.android_version) && !string.IsNullOrEmpty(nonchina.android_version);
|
||||
}
|
||||
|
||||
//iOS 是否同时安装了国内海外地区
|
||||
public bool isBothInstallIOS() {
|
||||
return !string.IsNullOrEmpty(china.ios_version) && !string.IsNullOrEmpty(nonchina.ios_version);
|
||||
}
|
||||
}
|
||||
//已安装的sdk版本
|
||||
[Serializable]
|
||||
public class CountrySettingData
|
||||
{
|
||||
|
||||
public string android_version; //当前已安装Android sdk的版本号
|
||||
|
||||
public string ios_version; //当前已安装的iOS sdk的版本号
|
||||
|
||||
public bool enableAndroidX = false; //当前的AndroidX设置
|
||||
|
||||
public int country;
|
||||
|
||||
public string android_admob_app_id;
|
||||
public string ios_admob_app_id;
|
||||
|
||||
public CountrySettingData(int country) {
|
||||
this.country = country;
|
||||
if (country == ATConfig.NONCHINA_COUNTRY) {
|
||||
this.enableAndroidX = true;
|
||||
}
|
||||
}
|
||||
|
||||
public string getAdmobAppId(int os) {
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
return android_admob_app_id;
|
||||
} else {
|
||||
return ios_admob_app_id;
|
||||
}
|
||||
}
|
||||
|
||||
public void setAdmobAppId(string appId, int os) {
|
||||
if (os == ATConfig.OS_ANDROID) {
|
||||
android_admob_app_id = appId;
|
||||
} else {
|
||||
ios_admob_app_id = appId;
|
||||
}
|
||||
}
|
||||
}
|
||||
//存储在本地的Network json数据
|
||||
[Serializable]
|
||||
public class NetworkLocalData
|
||||
{
|
||||
public string name;
|
||||
public string version;
|
||||
public int country;
|
||||
public string path;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0542dcc5ae60d457286171ded8d8f526
|
||||
guid: d888d00957103464ab5969e6a00d7ea4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -1,118 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
using AnyThink.Scripts.IntegrationManager.Editor;
|
||||
using Network = AnyThink.Scripts.IntegrationManager.Editor.Network;
|
||||
|
||||
public class ATPluginSetting : ScriptableObject
|
||||
{
|
||||
public const string SettingsExportPath = "Assets/AnyThinkPlugin/Resources/Assets/ATPluginSetting.asset";
|
||||
|
||||
private static ATPluginSetting instance;
|
||||
[SerializeField] private string adMobAndroidAppId = string.Empty;
|
||||
[SerializeField] private string adMobIosAppId = string.Empty;
|
||||
|
||||
[SerializeField] private AnyThink.Scripts.IntegrationManager.Editor.Network coreNetwork = null;
|
||||
|
||||
[SerializeField] private bool enableAndroidX = false;
|
||||
|
||||
// [SerializeField] private int country = ATConfig.CHINA_COUNTRY;
|
||||
|
||||
// [SerializeField] private Dictionary<string, Versions> installedNetwork = new Dictionary<string, Versions>();
|
||||
|
||||
public static ATPluginSetting Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
var settingsDir = Path.GetDirectoryName(SettingsExportPath);
|
||||
if (!Directory.Exists(settingsDir))
|
||||
{
|
||||
Directory.CreateDirectory(settingsDir);
|
||||
}
|
||||
string settingsFilePath = SettingsExportPath;
|
||||
|
||||
instance = AssetDatabase.LoadAssetAtPath<ATPluginSetting>(settingsFilePath);
|
||||
if (instance != null) return instance;
|
||||
|
||||
instance = CreateInstance<ATPluginSetting>();
|
||||
AssetDatabase.CreateAsset(instance, settingsFilePath);
|
||||
// initCoreNetwork();
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
// private static void initCoreNetwork()
|
||||
// {
|
||||
// Versions curVerions = ATConfig.getInstalledNetworkVersion(ATIntegrationManager.AnyThinkNetworkName, ATConfig.getLocalCountry());
|
||||
// if (curVerions != null)
|
||||
// {
|
||||
// AnyThink.Scripts.IntegrationManager.Editor.Network coreNetwork = new AnyThink.Scripts.IntegrationManager.Editor.Network();
|
||||
// coreNetwork.CurrentVersions = curVerions;
|
||||
// ATPluginSetting.Instance.CoreNetwork = coreNetwork;
|
||||
// }
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// AdMob Android App ID.
|
||||
/// </summary>
|
||||
public string AdMobAndroidAppId
|
||||
{
|
||||
get { return Instance.adMobAndroidAppId; }
|
||||
set { Instance.adMobAndroidAppId = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AdMob iOS App ID.
|
||||
/// </summary>
|
||||
public string AdMobIosAppId
|
||||
{
|
||||
get { return Instance.adMobIosAppId; }
|
||||
set { Instance.adMobIosAppId = value; }
|
||||
}
|
||||
|
||||
public AnyThink.Scripts.IntegrationManager.Editor.Network CoreNetwork
|
||||
{
|
||||
get { return Instance.coreNetwork; }
|
||||
set { Instance.coreNetwork = value; }
|
||||
}
|
||||
// public void saveInstalledNetwork(string networkName, int country, Versions versions)
|
||||
// {
|
||||
// string key = networkName + "_" + country;
|
||||
// if (installedNetwork.ContainsKey(key))
|
||||
// {
|
||||
// installedNetwork.Remove(key);
|
||||
// }
|
||||
// installedNetwork.Add(key, versions);
|
||||
// SaveAsync();
|
||||
// }
|
||||
|
||||
// public Versions getInstalledNetwork(string networkName, int country)
|
||||
// {
|
||||
// Versions versions;
|
||||
// installedNetwork.TryGetValue(networkName + "_" + country, out versions);
|
||||
// return versions;
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// Saves the instance of the settings.
|
||||
/// </summary>
|
||||
public void SaveAsync()
|
||||
{
|
||||
EditorUtility.SetDirty(instance);
|
||||
}
|
||||
|
||||
public bool EnableAndroidX
|
||||
{
|
||||
get { return Instance.enableAndroidX; }
|
||||
set { Instance.enableAndroidX = value; }
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 74c9441c35d2f47f8b9642d36ec88750
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef9c052202b484fba97a4a35ea42d7e6
|
||||
guid: faaeb0026391549249b6b8bb9b2c6078
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 87bccae0237fd4a41ac446d6636f95e0
|
||||
guid: 483a01338fa974b4498cd71261d6e8b9
|
||||
AssemblyDefinitionImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Reference in New Issue
Block a user