220 lines
6.8 KiB
C#
220 lines
6.8 KiB
C#
|
|
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 int androidXSetting = 0; //当前的AndroidX设置,0=default; 1=修改为AndroidX;2=修改为非AndroidX
|
|||
|
|
|
|||
|
|
public int country;
|
|||
|
|
|
|||
|
|
public string android_admob_app_id;
|
|||
|
|
public string ios_admob_app_id;
|
|||
|
|
|
|||
|
|
public CountrySettingData(int country) {
|
|||
|
|
this.country = country;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[Serializable]
|
|||
|
|
public class HotfixPluginData
|
|||
|
|
{
|
|||
|
|
public string plugin_version;
|
|||
|
|
public string hot_fix_version;
|
|||
|
|
public string download_url;
|
|||
|
|
public int status;
|
|||
|
|
public string file_name;
|
|||
|
|
}
|
|||
|
|
}
|