81 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | ||
|  | using System.Linq; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace AppLovinMax.Scripts.IntegrationManager.Editor | ||
|  | { | ||
|  |     public static class AppLovinIntegrationManagerUtils | ||
|  |     { | ||
|  |         /// <summary> | ||
|  |         /// Compares AppLovin MAX Unity mediation adapter plugin versions. Returns <see cref="MaxSdkUtils.VersionComparisonResult.Lesser"/>, <see cref="MaxSdkUtils.VersionComparisonResult.Equal"/>, | ||
|  |         /// or <see cref="MaxSdkUtils.VersionComparisonResult.Greater"/> as the first version is less than, equal to, or greater than the second. | ||
|  |         /// | ||
|  |         /// If a version for a specific platform is only present in one of the provided versions, the one that contains it is considered newer. | ||
|  |         /// </summary> | ||
|  |         /// <param name="versionA">The first version to be compared.</param> | ||
|  |         /// <param name="versionB">The second version to be compared.</param> | ||
|  |         /// <returns> | ||
|  |         /// <see cref="MaxSdkUtils.VersionComparisonResult.Lesser"/> if versionA is less than versionB. | ||
|  |         /// <see cref="MaxSdkUtils.VersionComparisonResult.Equal"/> if versionA and versionB are equal. | ||
|  |         /// <see cref="MaxSdkUtils.VersionComparisonResult.Greater"/> if versionA is greater than versionB. | ||
|  |         /// </returns> | ||
|  |         internal static MaxSdkUtils.VersionComparisonResult CompareUnityMediationVersions(string versionA, string versionB) | ||
|  |         { | ||
|  |             if (versionA.Equals(versionB)) return MaxSdkUtils.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 = MaxSdkUtils.VersionComparisonResult.Equal; | ||
|  |             if (versionA.Contains("android") && versionB.Contains("android")) | ||
|  |             { | ||
|  |                 var androidVersionA = versionAComponents[1]; | ||
|  |                 var androidVersionB = versionBComponents[1]; | ||
|  |                 androidComparison = MaxSdkUtils.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 = MaxSdkUtils.VersionComparisonResult.Greater; | ||
|  | 
 | ||
|  |                 // Remove the Android version component so that iOS versions can be processed. | ||
|  |                 versionAComponents.RemoveRange(0, 2); | ||
|  |             } | ||
|  |             else if (versionB.Contains("android")) | ||
|  |             { | ||
|  |                 androidComparison = MaxSdkUtils.VersionComparisonResult.Lesser; | ||
|  | 
 | ||
|  |                 // Remove the Android version component so that iOS version can be processed. | ||
|  |                 versionBComponents.RemoveRange(0, 2); | ||
|  |             } | ||
|  | 
 | ||
|  |             var iosComparison = MaxSdkUtils.VersionComparisonResult.Equal; | ||
|  |             if (versionA.Contains("ios") && versionB.Contains("ios")) | ||
|  |             { | ||
|  |                 var iosVersionA = versionAComponents[1]; | ||
|  |                 var iosVersionB = versionBComponents[1]; | ||
|  |                 iosComparison = MaxSdkUtils.CompareVersions(iosVersionA, iosVersionB); | ||
|  |             } | ||
|  |             else if (versionA.Contains("ios")) | ||
|  |             { | ||
|  |                 iosComparison = MaxSdkUtils.VersionComparisonResult.Greater; | ||
|  |             } | ||
|  |             else if (versionB.Contains("ios")) | ||
|  |             { | ||
|  |                 iosComparison = MaxSdkUtils.VersionComparisonResult.Lesser; | ||
|  |             } | ||
|  | 
 | ||
|  |             // If either one of the Android or iOS version is greater, the entire version should be greater. | ||
|  |             return (androidComparison == MaxSdkUtils.VersionComparisonResult.Greater || iosComparison == MaxSdkUtils.VersionComparisonResult.Greater) ? MaxSdkUtils.VersionComparisonResult.Greater : MaxSdkUtils.VersionComparisonResult.Lesser; | ||
|  |         } | ||
|  |     } | ||
|  | } |