139 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			139 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | // | |||
|  | //  MaxInitialization.cs | |||
|  | //  AppLovin MAX Unity Plugin | |||
|  | // | |||
|  | //  Created by Thomas So on 5/24/19. | |||
|  | //  Copyright © 2019 AppLovin. All rights reserved. | |||
|  | // | |||
|  | 
 | |||
|  | using System.Collections.Generic; | |||
|  | using System.IO; | |||
|  | using UnityEditor; | |||
|  | 
 | |||
|  | namespace AppLovinMax.Scripts.IntegrationManager.Editor | |||
|  | { | |||
|  |     [InitializeOnLoad] | |||
|  |     public class AppLovinInitialize | |||
|  |     { | |||
|  |         private static readonly List<string> ObsoleteNetworks = new List<string> | |||
|  |         { | |||
|  |             "AdColony", | |||
|  |             "Criteo", | |||
|  |             "Nend", | |||
|  |             "Snap", | |||
|  |             "Tapjoy", | |||
|  |             "VerizonAds", | |||
|  |             "VoodooAds" | |||
|  |         }; | |||
|  | 
 | |||
|  |         private static readonly List<string> ObsoleteFileExportPathsToDelete = new List<string> | |||
|  |         { | |||
|  |             // The `MaxSdk/Scripts/Editor` folder contents have been moved into `MaxSdk/Scripts/IntegrationManager/Editor`. | |||
|  |             "MaxSdk/Scripts/Editor", | |||
|  |             "MaxSdk/Scripts/Editor.meta", | |||
|  | 
 | |||
|  |             // The `EventSystemChecker` has been renamed to `MaxEventSystemChecker`. | |||
|  |             "MaxSdk/Scripts/EventSystemChecker.cs", | |||
|  |             "MaxSdk/Scripts/EventSystemChecker.cs.meta", | |||
|  | 
 | |||
|  |             // Google AdMob adapter pre/post process scripts. The logic has been migrated to the main plugin. | |||
|  |             "MaxSdk/Mediation/Google/Editor/MaxGoogleInitialize.cs", | |||
|  |             "MaxSdk/Mediation/Google/Editor/MaxGoogleInitialize.cs.meta", | |||
|  |             "MaxSdk/Mediation/Google/Editor/MaxMediationGoogleUtils.cs", | |||
|  |             "MaxSdk/Mediation/Google/Editor/MaxMediationGoogleUtils.cs.meta", | |||
|  |             "MaxSdk/Mediation/Google/Editor/PostProcessor.cs", | |||
|  |             "MaxSdk/Mediation/Google/Editor/PostProcessor.cs.meta", | |||
|  |             "MaxSdk/Mediation/Google/Editor/PreProcessor.cs", | |||
|  |             "MaxSdk/Mediation/Google/Editor/PreProcessor.cs.meta", | |||
|  |             "MaxSdk/Mediation/Google/Editor/MaxSdk.Mediation.Google.Editor.asmdef", | |||
|  |             "MaxSdk/Mediation/Google/MaxSdk.Mediation.Google.Editor.asmdef.meta", | |||
|  |             "Plugins/Android/MaxMediationGoogle.androidlib", | |||
|  |             "Plugins/Android/MaxMediationGoogle.androidlib.meta", | |||
|  | 
 | |||
|  |             // Google Ad Manager adapter pre/post process scripts. The logic has been migrated to the main plugin. | |||
|  |             "MaxSdk/Mediation/GoogleAdManager/Editor/MaxGoogleAdManagerInitialize.cs", | |||
|  |             "MaxSdk/Mediation/GoogleAdManager/Editor/MaxGoogleAdManagerInitialize.cs.meta", | |||
|  |             "MaxSdk/Mediation/GoogleAdManager/Editor/PostProcessor.cs", | |||
|  |             "MaxSdk/Mediation/GoogleAdManager/Editor/PostProcessor.cs.meta", | |||
|  |             "MaxSdk/Mediation/GoogleAdManager/Editor/MaxSdk.Mediation.GoogleAdManager.Editor.asmdef", | |||
|  |             "MaxSdk/Mediation/GoogleAdManager/Editor/MaxSdk.Mediation.GoogleAdManager.Editor.asmdef.meta", | |||
|  |             "Plugins/Android/MaxMediationGoogleAdManager.androidlib", | |||
|  |             "Plugins/Android/MaxMediationGoogleAdManager.androidlib.meta", | |||
|  | 
 | |||
|  |             // The `VariableService` has been removed. | |||
|  |             "MaxSdk/Scripts/MaxVariableServiceAndroid.cs", | |||
|  |             "MaxSdk/Scripts/MaxVariableServiceAndroid.cs.meta", | |||
|  |             "MaxSdk/Scripts/MaxVariableServiceiOS.cs", | |||
|  |             "MaxSdk/Scripts/MaxVariableServiceiOS.cs.meta", | |||
|  |             "MaxSdk/Scripts/MaxVariableServiceUnityEditor.cs", | |||
|  |             "MaxSdk/Scripts/MaxVariableServiceUnityEditor.cs.meta", | |||
|  | 
 | |||
|  |             // The `MaxSdk/Scripts/Editor` folder contents have been moved into `MaxSdk/Scripts/IntegrationManager/Editor`. | |||
|  |             "MaxSdk/Version.md", | |||
|  |             "MaxSdk/Version.md.meta", | |||
|  | 
 | |||
|  |             // TODO: Add MaxTargetingData and MaxUserSegment when the plugin has enough traction. | |||
|  |         }; | |||
|  | 
 | |||
|  |         static AppLovinInitialize() | |||
|  |         { | |||
|  |             // Don't run obsolete file cleanup logic when entering play mode. | |||
|  |             if (EditorApplication.isPlayingOrWillChangePlaymode) return; | |||
|  | 
 | |||
|  | #if UNITY_IOS | |||
|  |             // Check that the publisher is targeting iOS 9.0+ | |||
|  |             if (!PlayerSettings.iOS.targetOSVersionString.StartsWith("9.") && !PlayerSettings.iOS.targetOSVersionString.StartsWith("1")) | |||
|  |             { | |||
|  |                 MaxSdkLogger.UserError("Detected iOS project version less than iOS 9 - The AppLovin MAX SDK WILL NOT WORK ON < iOS9!!!"); | |||
|  |             } | |||
|  | #endif | |||
|  | 
 | |||
|  |             var isPluginInPackageManager = AppLovinIntegrationManager.IsPluginInPackageManager; | |||
|  |             if (!isPluginInPackageManager) | |||
|  |             { | |||
|  |                 var changesMade = false; | |||
|  |                 foreach (var obsoleteFileExportPathToDelete in ObsoleteFileExportPathsToDelete) | |||
|  |                 { | |||
|  |                     var pathToDelete = MaxSdkUtils.GetAssetPathForExportPath(obsoleteFileExportPathToDelete); | |||
|  |                     if (CheckExistence(pathToDelete)) | |||
|  |                     { | |||
|  |                         MaxSdkLogger.UserDebug("Deleting obsolete file '" + pathToDelete + "' that is no longer needed."); | |||
|  |                         FileUtil.DeleteFileOrDirectory(pathToDelete); | |||
|  |                         changesMade = true; | |||
|  |                     } | |||
|  |                 } | |||
|  | 
 | |||
|  |                 var pluginParentDir = AppLovinIntegrationManager.PluginParentDirectory; | |||
|  |                 // Check if any obsolete networks are installed | |||
|  |                 foreach (var obsoleteNetwork in ObsoleteNetworks) | |||
|  |                 { | |||
|  |                     var networkDir = Path.Combine(pluginParentDir, "MaxSdk/Mediation/" + obsoleteNetwork); | |||
|  |                     if (CheckExistence(networkDir)) | |||
|  |                     { | |||
|  |                         MaxSdkLogger.UserDebug("Deleting obsolete network " + obsoleteNetwork + " from path " + networkDir + "..."); | |||
|  |                         FileUtil.DeleteFileOrDirectory(networkDir); | |||
|  |                         FileUtil.DeleteFileOrDirectory(networkDir + ".meta"); | |||
|  |                         changesMade = true; | |||
|  |                     } | |||
|  |                 } | |||
|  | 
 | |||
|  |                 // Refresh UI | |||
|  |                 if (changesMade) | |||
|  |                 { | |||
|  |                     AssetDatabase.Refresh(); | |||
|  |                     MaxSdkLogger.UserDebug("Obsolete networks and files removed."); | |||
|  |                 } | |||
|  |             } | |||
|  | 
 | |||
|  |             AppLovinAutoUpdater.Update(); | |||
|  |         } | |||
|  | 
 | |||
|  |         private static bool CheckExistence(string location) | |||
|  |         { | |||
|  |             return File.Exists(location) || | |||
|  |                    Directory.Exists(location) || | |||
|  |                    (location.EndsWith("/*") && Directory.Exists(Path.GetDirectoryName(location))); | |||
|  |         } | |||
|  |     } | |||
|  | } |