diff --git a/MaxSdk/AppLovin/Editor/Dependencies.xml b/MaxSdk/AppLovin/Editor/Dependencies.xml index 0bb9011..07b3ecf 100644 --- a/MaxSdk/AppLovin/Editor/Dependencies.xml +++ b/MaxSdk/AppLovin/Editor/Dependencies.xml @@ -1,9 +1,9 @@ - + - + diff --git a/MaxSdk/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar b/MaxSdk/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar index 60a43f0..a9d7ad8 100644 Binary files a/MaxSdk/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar and b/MaxSdk/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar differ diff --git a/MaxSdk/AppLovin/Plugins/iOS/MAUnityAdManager.m b/MaxSdk/AppLovin/Plugins/iOS/MAUnityAdManager.m index 67a0eab..36c28d2 100644 --- a/MaxSdk/AppLovin/Plugins/iOS/MAUnityAdManager.m +++ b/MaxSdk/AppLovin/Plugins/iOS/MAUnityAdManager.m @@ -5,7 +5,7 @@ #import "MAUnityAdManager.h" -#define VERSION @"6.4.3" +#define VERSION @"6.5.2" #define KEY_WINDOW [UIApplication sharedApplication].keyWindow #define DEVICE_SPECIFIC_ADVIEW_AD_FORMAT ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) ? MAAdFormat.leader : MAAdFormat.banner @@ -21,14 +21,8 @@ extern "C" { UIWindow* UnityGetMainWindow(void); // life cycle management + int UnityIsPaused(void); void UnityPause(int pause); - void UnitySendMessage(const char* obj, const char* method, const char* msg); - - static const char * cStringCopy(NSString *string) - { - const char *value = string.UTF8String; - return value ? strdup(value) : NULL; - } void max_unity_dispatch_on_main_thread(dispatch_block_t block) { @@ -79,6 +73,9 @@ extern "C" { @property (nonatomic, strong) NSMutableDictionary *adInfoDict; @property (nonatomic, strong) NSObject *adInfoDictLock; +@property (nonatomic, strong) NSOperationQueue *backgroundCallbackEventsQueue; +@property (nonatomic, assign) BOOL resumeUnityAfterApplicationBecomesActive; + @end // Internal @@ -132,6 +129,9 @@ static ALUnityBackgroundCallback backgroundCallback; self.adInfoDict = [NSMutableDictionary dictionary]; self.adInfoDictLock = [[NSObject alloc] init]; + self.backgroundCallbackEventsQueue = [[NSOperationQueue alloc] init]; + self.backgroundCallbackEventsQueue.maxConcurrentOperationCount = 1; + max_unity_dispatch_on_main_thread(^{ self.safeAreaBackground = [[UIView alloc] init]; self.safeAreaBackground.hidden = YES; @@ -154,6 +154,31 @@ static ALUnityBackgroundCallback backgroundCallback; [self positionAdViewForAdUnitIdentifier: adUnitIdentifier adFormat: self.verticalAdViewFormats[adUnitIdentifier]]; } }]; + + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(applicationPaused:) + name: UIApplicationDidEnterBackgroundNotification + object: nil]; + + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(applicationResumed:) + name: UIApplicationDidBecomeActiveNotification + object: nil]; + + [[NSNotificationCenter defaultCenter] addObserverForName: UIApplicationDidBecomeActiveNotification + object: nil + queue: [NSOperationQueue mainQueue] + usingBlock:^(NSNotification *notification) { + +#if !IS_TEST_APP + if ( self.resumeUnityAfterApplicationBecomesActive && UnityIsPaused() ) + { + UnityPause(NO); + } +#endif + + self.backgroundCallbackEventsQueue.suspended = NO; + }]; } return self; } @@ -197,13 +222,13 @@ static ALUnityBackgroundCallback backgroundCallback; NSString *consentFlowUserGeographyStr = @(configuration.consentFlowUserGeography).stringValue; NSString *consentDialogStateStr = @(configuration.consentDialogState).stringValue; NSString *appTrackingStatus = @(configuration.appTrackingTransparencyStatus).stringValue; // Deliberately name it `appTrackingStatus` to be a bit more generic (in case Android introduces a similar concept) - [MAUnityAdManager forwardUnityEventWithArgs: @{@"name" : @"OnSdkInitializedEvent", - @"consentFlowUserGeography" : consentFlowUserGeographyStr, - @"consentDialogState" : consentDialogStateStr, - @"countryCode" : configuration.countryCode, - @"appTrackingStatus" : appTrackingStatus, - @"isSuccessfullyInitialized" : @([self.sdk isInitialized]), - @"isTestModeEnabled" : @([configuration isTestModeEnabled])}]; + [self forwardUnityEventWithArgs: @{@"name" : @"OnSdkInitializedEvent", + @"consentFlowUserGeography" : consentFlowUserGeographyStr, + @"consentDialogState" : consentDialogStateStr, + @"countryCode" : configuration.countryCode, + @"appTrackingStatus" : appTrackingStatus, + @"isSuccessfullyInitialized" : @([self.sdk isInitialized]), + @"isTestModeEnabled" : @([configuration isTestModeEnabled])}]; }); }]; @@ -222,7 +247,7 @@ static ALUnityBackgroundCallback backgroundCallback; [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: [self adViewAdFormatForAdUnitIdentifier: adUnitIdentifier] atPosition: DEFAULT_AD_VIEW_POSITION withOffset: CGPointMake(xOffset, yOffset)]; } -- (void)loadBannerWithAdUnitIdentifier:(nullable NSString *)adUnitIdentifier +- (void)loadBannerWithAdUnitIdentifier:(nullable NSString *)adUnitIdentifier { [self loadAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: [self adViewAdFormatForAdUnitIdentifier: adUnitIdentifier]]; } @@ -710,7 +735,7 @@ static ALUnityBackgroundCallback backgroundCallback; } NSDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -764,13 +789,13 @@ static ALUnityBackgroundCallback backgroundCallback; [self.adInfoDict removeObjectForKey: adUnitIdentifier]; } - [MAUnityAdManager forwardUnityEventWithArgs: @{@"name" : name, - @"adUnitId" : adUnitIdentifier, - @"errorCode" : [@(error.code) stringValue], - @"errorMessage" : error.message, - @"waterfallInfo" : [self createAdWaterfallInfo: error.waterfall], - @"adLoadFailureInfo" : error.adLoadFailureInfo ?: @"", - @"latencyMillis" : [self requestLatencyMillisFromRequestLatency: error.requestLatency]}]; + [self forwardUnityEventWithArgs: @{@"name" : name, + @"adUnitId" : adUnitIdentifier, + @"errorCode" : [@(error.code) stringValue], + @"errorMessage" : error.message, + @"waterfallInfo" : [self createAdWaterfallInfo: error.waterfall], + @"adLoadFailureInfo" : error.adLoadFailureInfo ?: @"", + @"latencyMillis" : [self requestLatencyMillisFromRequestLatency: error.requestLatency]}]; }); } @@ -811,7 +836,7 @@ static ALUnityBackgroundCallback backgroundCallback; } NSDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -821,9 +846,9 @@ static ALUnityBackgroundCallback backgroundCallback; MAAdFormat *adFormat = ad.format; if ( ![adFormat isFullscreenAd] ) return; - // UnityPause needs to be called on the main thread. #if !IS_TEST_APP - UnityPause(1); + // UnityPause needs to be called on the main thread. + UnityPause(YES); #endif dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ @@ -847,7 +872,7 @@ static ALUnityBackgroundCallback backgroundCallback; } NSDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -884,7 +909,7 @@ static ALUnityBackgroundCallback backgroundCallback; args[@"mediatedNetworkErrorMessage"] = error.mediatedNetworkErrorMessage; args[@"waterfallInfo"] = [self createAdWaterfallInfo: error.waterfall]; args[@"latencyMillis"] = [self requestLatencyMillisFromRequestLatency: error.requestLatency]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -894,9 +919,18 @@ static ALUnityBackgroundCallback backgroundCallback; MAAdFormat *adFormat = ad.format; if ( ![adFormat isFullscreenAd] ) return; - // UnityPause needs to be called on the main thread. #if !IS_TEST_APP - UnityPause(0); + extern bool _didResignActive; + if ( _didResignActive ) + { + // If the application is not active, we should wait until application becomes active to resume unity. + self.resumeUnityAfterApplicationBecomesActive = YES; + } + else + { + // UnityPause needs to be called on the main thread. + UnityPause(NO); + } #endif dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ @@ -920,7 +954,7 @@ static ALUnityBackgroundCallback backgroundCallback; } NSDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -933,9 +967,9 @@ static ALUnityBackgroundCallback backgroundCallback; return; } - // UnityPause needs to be called on the main thread. #if !IS_TEST_APP - UnityPause(1); + // UnityPause needs to be called on the main thread. + UnityPause(YES); #endif dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ @@ -951,7 +985,7 @@ static ALUnityBackgroundCallback backgroundCallback; } NSDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -964,9 +998,18 @@ static ALUnityBackgroundCallback backgroundCallback; return; } - // UnityPause needs to be called on the main thread. #if !IS_TEST_APP - UnityPause(0); + extern bool _didResignActive; + if ( _didResignActive ) + { + // If the application is not active, we should wait until application becomes active to resume unity. + self.resumeUnityAfterApplicationBecomesActive = YES; + } + else + { + // UnityPause needs to be called on the main thread. + UnityPause(NO); + } #endif dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ @@ -982,7 +1025,7 @@ static ALUnityBackgroundCallback backgroundCallback; } NSDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -1017,7 +1060,7 @@ static ALUnityBackgroundCallback backgroundCallback; NSMutableDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; args[@"rewardLabel"] = rewardLabel; args[@"rewardAmount"] = rewardAmount; - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -1059,7 +1102,7 @@ static ALUnityBackgroundCallback backgroundCallback; NSMutableDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; args[@"keepInBackground"] = @([adFormat isFullscreenAd]); - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -1098,9 +1141,9 @@ static ALUnityBackgroundCallback backgroundCallback; NSMutableDictionary *args = [self defaultAdEventParametersForName: name withAd: ad]; args[@"adReviewCreativeId"] = creativeIdentifier; args[@"keepInBackground"] = @([adFormat isFullscreenAd]); - + // Forward the event in background for fullscreen ads so that the user gets the callback even while the ad is playing. - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); } @@ -1939,24 +1982,19 @@ static ALUnityBackgroundCallback backgroundCallback; return UnityGetGLViewController() ?: UnityGetMainWindow().rootViewController ?: [KEY_WINDOW rootViewController]; } -+ (void)forwardUnityEventWithArgs:(NSDictionary *)args +- (void)forwardUnityEventWithArgs:(NSDictionary *)args { #if !IS_TEST_APP - void (^runnable)(void) = ^{ - const char *serializedParameters = cStringCopy([self serializeParameters: args]); - backgroundCallback(serializedParameters); - }; - - // Always forward in background - we push it back to the main thread in Unity - if ( [NSThread isMainThread] ) - { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), runnable); - } - else - { - runnable(); - } + extern bool _didResignActive; + // We should not call any script callbacks when application is not active. Suspend the callback queue if resign is active. + // We'll resume the queue once the application becomes active again. + self.backgroundCallbackEventsQueue.suspended = _didResignActive; #endif + + [self.backgroundCallbackEventsQueue addOperationWithBlock:^{ + NSString *serializedParameters = [MAUnityAdManager serializeParameters: args]; + backgroundCallback(serializedParameters.UTF8String); + }]; } + (NSString *)serializeParameters:(NSDictionary *)dict @@ -2011,7 +2049,7 @@ static ALUnityBackgroundCallback backgroundCallback; - (void)didDismissUserConsentDialog { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - [MAUnityAdManager forwardUnityEventWithArgs: @{@"name" : @"OnSdkConsentDialogDismissedEvent"}]; + [self forwardUnityEventWithArgs: @{@"name" : @"OnSdkConsentDialogDismissedEvent"}]; }); } @@ -2020,7 +2058,7 @@ static ALUnityBackgroundCallback backgroundCallback; - (void)showCMPForExistingUser { [self.sdk.cmpService showCMPForExistingUserWithCompletion:^(ALCMPError * _Nullable error) { - + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSMutableDictionary *args = [NSMutableDictionary dictionaryWithCapacity: 2]; args[@"name"] = @"OnCmpCompletedEvent"; @@ -2034,11 +2072,31 @@ static ALUnityBackgroundCallback backgroundCallback; @"keepInBackground": @(YES)}; } - [MAUnityAdManager forwardUnityEventWithArgs: args]; + [self forwardUnityEventWithArgs: args]; }); }]; } +#pragma mark - Application + +- (void)applicationPaused:(NSNotification *)notification +{ + [self notifyApplicationStateChangedEventForPauseState: YES]; +} + +- (void)applicationResumed:(NSNotification *)notification +{ + [self notifyApplicationStateChangedEventForPauseState: NO]; +} + +- (void)notifyApplicationStateChangedEventForPauseState:(BOOL)isPaused +{ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [self forwardUnityEventWithArgs: @{@"name": @"OnApplicationStateChanged", + @"isPaused": @(isPaused)}]; + }); +} + - (MAAd *)adWithAdUnitIdentifier:(NSString *)adUnitIdentifier { @synchronized ( self.adInfoDictLock ) diff --git a/MaxSdk/AppLovin/Plugins/iOS/MAUnityPlugin.mm b/MaxSdk/AppLovin/Plugins/iOS/MAUnityPlugin.mm index 5571964..7ca2561 100644 --- a/MaxSdk/AppLovin/Plugins/iOS/MAUnityPlugin.mm +++ b/MaxSdk/AppLovin/Plugins/iOS/MAUnityPlugin.mm @@ -357,7 +357,7 @@ extern "C" void _MaxShowConsentDialog() { - NSLog(@"[%@] Failed to show consent dialog - Unavailable on iOS, please use the consent flow: https://dash.applovin.com/documentation/mediation/unity/getting-started/consent-flow", TAG); + NSLog(@"[%@] Failed to show consent dialog - Unavailable on iOS, please use the consent flow: https://developers.applovin.com/en/unity/overview/terms-and-privacy-policy-flow", TAG); } int _MaxConsentDialogState() diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs index 09634ae..1536e66 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs @@ -184,13 +184,10 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor /// /// Whether or not the plugin is under the Assets/ folder. /// -//--- INJECT PluginOutside START --- public static bool IsPluginOutsideAssetsDirectory - { get => !(PluginParentDirectory.StartsWith("Assets") || PluginParentDirectory.StartsWith("Packages")); } -//--- INJECT PluginOutside OVER --- -// { -// get { return !PluginParentDirectory.StartsWith("Assets"); } -// } + { + get { return !PluginParentDirectory.StartsWith("Assets"); } + } /// /// Whether or not gradle build system is enabled. diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs index 8598f30..3071a8c 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs @@ -18,15 +18,13 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor { public class AppLovinIntegrationManagerWindow : EditorWindow { - private const string keyNewLocalizationsMarked = "com.applovin.new_localizations_marked_v0"; // Update the key version each time new localizations are added. - private const string windowTitle = "AppLovin Integration Manager"; private const string appLovinSdkKeyLink = "https://dash.applovin.com/o/account#keys"; private const string userTrackingUsageDescriptionDocsLink = "https://developer.apple.com/documentation/bundleresources/information_property_list/nsusertrackingusagedescription"; - private const string documentationTermsAndPrivacyPolicyFlow = "https://dash.applovin.com/documentation/mediation/ios/getting-started/terms-and-privacy-policy-flow"; - private const string documentationAdaptersLink = "https://dash.applovin.com/documentation/mediation/unity/mediation-adapters"; + private const string documentationTermsAndPrivacyPolicyFlow = "https://developers.applovin.com/en/unity/overview/terms-and-privacy-policy-flow"; + private const string documentationAdaptersLink = "https://developers.applovin.com/en/unity/preparing-mediated-networks"; private const string documentationNote = "Please ensure that integration instructions (e.g. permissions, ATS settings, etc) specific to each network are implemented as well. Click the link below for more info:"; private const string uninstallIconExportPath = "MaxSdk/Resources/Images/uninstall_icon.png"; private const string alertIconExportPath = "MaxSdk/Resources/Images/alert_icon.png"; @@ -899,7 +897,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor GUILayout.Space(5); AppLovinSettings.Instance.AddApsSkAdNetworkIds = DrawOtherSettingsToggle(AppLovinSettings.Instance.AddApsSkAdNetworkIds, " Add Amazon Publisher Services SKAdNetworkID's"); GUILayout.Space(5); - var autoUpdateEnabled = DrawOtherSettingsToggle(EditorPrefs.GetBool(AppLovinAutoUpdater.KeyAutoUpdateEnabled, true), " Enable Auto Update"); + var autoUpdateEnabled = DrawOtherSettingsToggle(EditorPrefs.GetBool(AppLovinAutoUpdater.KeyAutoUpdateEnabled, true), " Enable Auto Update", "Checks for AppLovin MAX plugin updates and notifies you when an update is available."); EditorPrefs.SetBool(AppLovinAutoUpdater.KeyAutoUpdateEnabled, autoUpdateEnabled); GUILayout.Space(5); var verboseLoggingEnabled = DrawOtherSettingsToggle(EditorPrefs.GetBool(MaxSdkLogger.KeyVerboseLoggingEnabled, false), " Enable Verbose Logging"); @@ -914,12 +912,13 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor GUILayout.EndHorizontal(); } - private bool DrawOtherSettingsToggle(bool value, string text) + private bool DrawOtherSettingsToggle(bool value, string text, string tooltip = "") { using (new EditorGUILayout.HorizontalScope()) { GUILayout.Space(4); - var toggleValue = GUILayout.Toggle(value, text); + var content = MaxSdkUtils.IsValidString(tooltip) ? new GUIContent(text, tooltip) : new GUIContent(text); + var toggleValue = GUILayout.Toggle(value, content); GUILayout.Space(4); return toggleValue; diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup index 5d6574e..130b383 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup @@ -31,7 +31,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor [MenuItem("AppLovin/Documentation")] private static void Documentation() { - Application.OpenURL("https://dash.applovin.com/documentation/mediation/unity/getting-started"); + Application.OpenURL("https://developers.applovin.com/en/unity/overview/integration"); } [MenuItem("AppLovin/Contact Us")] diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup.meta b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup.meta index 0749642..30fb834 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup.meta +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup.meta @@ -1,10 +1,14 @@ fileFormatVersion: 2 -guid: 028aec80942df459ab226487b786042c +guid: 02c2d277874f649d18a59d382420bf65 labels: - al_max -- al_max_export_path-MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs.backup -DefaultImporter: +- al_max_export_path-MaxSdk/Scripts/IntegrationManager/Editor/AppLovinMenuItems.cs +MonoImporter: externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs index 2620739..d8ee3c7 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs @@ -90,6 +90,33 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor dynamicLibrariesToEmbed.Add("IASDKCore.xcframework"); } + if (AppLovinIntegrationManager.IsAdapterInstalled("InMobi", "10.7.2.0")) + { + dynamicLibrariesToEmbed.Add("InMobiSDK.xcframework"); + } + + if (AppLovinIntegrationManager.IsAdapterInstalled("Smaato", "22.8.3.0")) + { + dynamicLibrariesToEmbed.AddRange(new List() + { + "SmaatoSDKBanner.xcframework", + "SmaatoSDKCore.xcframework", + "SmaatoSDKInAppBidding.xcframework", + "SmaatoSDKInterstitial.xcframework", + "SmaatoSDKNative.xcframework", + "SmaatoSDKOpenMeasurement.xcframework", + "SmaatoSDKOutstream.xcframework", + "SmaatoSDKRewardedAds.xcframework", + "SmaatoSDKRichMedia.xcframework", + "SmaatoSDKVideo.xcframework" + }); + } + + if (AppLovinIntegrationManager.IsAdapterInstalled("Verve", "3.0.0.0")) + { + dynamicLibrariesToEmbed.Add("ATOM.xcframework"); + } + return dynamicLibrariesToEmbed; } } diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs index 2761fec..61bea2b 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs @@ -38,6 +38,10 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor private const string KeyConsentFlowTermsOfService = "consent_flow_terms_of_service"; private const string KeyConsentFlowPrivacyPolicy = "consent_flow_privacy_policy"; private const string KeyConsentFlowDebugUserGeography = "consent_flow_debug_user_geography"; + + private const string UmpLegacyDependencyLine = ""; + private const string UmpDependencyLine = ""; + private const string AndroidPackagesContainerElementString = "androidPackages"; public void OnPreprocessBuild(BuildReport report) { @@ -181,16 +185,16 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor private static void AddGoogleCmpDependencyIfNeeded() { - const string umpDependencyLine = ""; - const string containerElementString = "androidPackages"; + // Remove the legacy fixed UMP version if it exists, we'll add the dependency with a dynamic version below. + TryRemoveStringFromDependencyFile(UmpLegacyDependencyLine, AndroidPackagesContainerElementString); if (AppLovinInternalSettings.Instance.ConsentFlowEnabled) { - TryAddStringToDependencyFile(umpDependencyLine, containerElementString); + TryAddStringToDependencyFile(UmpDependencyLine, AndroidPackagesContainerElementString); } else { - TryRemoveStringFromDependencyFile(umpDependencyLine, containerElementString); + TryRemoveStringFromDependencyFile(UmpDependencyLine, AndroidPackagesContainerElementString); } } diff --git a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs index dcffbc6..8537150 100644 --- a/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs +++ b/MaxSdk/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs @@ -20,18 +20,22 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor AddGoogleCmpDependencyIfNeeded(); } + private const string UmpLegacyDependencyLine = ""; + private const string UmpDependencyLine = ""; + private const string IosPodsContainerElementString = "iosPods"; + private static void AddGoogleCmpDependencyIfNeeded() { - const string umpDependencyLine = ""; - const string containerElementString = "iosPods"; + // Remove the legacy fixed UMP version if it exists, we'll add the dependency with a dynamic version below. + TryRemoveStringFromDependencyFile(UmpLegacyDependencyLine, IosPodsContainerElementString); if (AppLovinInternalSettings.Instance.ConsentFlowEnabled) { - TryAddStringToDependencyFile(umpDependencyLine, containerElementString); + TryAddStringToDependencyFile(UmpDependencyLine, IosPodsContainerElementString); } else { - TryRemoveStringFromDependencyFile(umpDependencyLine, containerElementString); + TryRemoveStringFromDependencyFile(UmpDependencyLine, IosPodsContainerElementString); } } diff --git a/MaxSdk/Scripts/MaxEventExecutor.cs b/MaxSdk/Scripts/MaxEventExecutor.cs index ee229be..1065e6d 100644 --- a/MaxSdk/Scripts/MaxEventExecutor.cs +++ b/MaxSdk/Scripts/MaxEventExecutor.cs @@ -44,7 +44,7 @@ namespace AppLovinMax.Internal #region Public API -#if UNITY_EDITOR +#if UNITY_EDITOR || !(UNITY_ANDROID || UNITY_IPHONE || UNITY_IOS) public static MaxEventExecutor Instance { get diff --git a/MaxSdk/Scripts/MaxSdk.cs b/MaxSdk/Scripts/MaxSdk.cs index 0620166..05e7a99 100644 --- a/MaxSdk/Scripts/MaxSdk.cs +++ b/MaxSdk/Scripts/MaxSdk.cs @@ -18,7 +18,7 @@ public class MaxSdk : MaxSdkUnityEditor #endif { - private const string _version = "6.4.3"; + private const string _version = "6.5.2"; /// /// Returns the current plugin version. diff --git a/MaxSdk/Scripts/MaxSdkBase.cs b/MaxSdk/Scripts/MaxSdkBase.cs index ebd9864..dacb7af 100644 --- a/MaxSdk/Scripts/MaxSdkBase.cs +++ b/MaxSdk/Scripts/MaxSdkBase.cs @@ -532,6 +532,11 @@ public abstract class MaxSdkBase } } + /// + /// Determines whether ad events raised by the AppLovin's Unity plugin should be invoked on the Unity main thread. + /// + public static bool? InvokeEventsOnUnityMainThread { get; set; } + /// /// The CMP service, which provides direct APIs for interfacing with the Google-certified CMP installed, if any. /// diff --git a/MaxSdk/Scripts/MaxSdkCallbacks.cs b/MaxSdk/Scripts/MaxSdkCallbacks.cs index 8654dfb..d2e3522 100644 --- a/MaxSdk/Scripts/MaxSdkCallbacks.cs +++ b/MaxSdk/Scripts/MaxSdkCallbacks.cs @@ -43,6 +43,24 @@ public static class MaxSdkCallbacks } } + private static Action _onApplicationStateChangedEvent; + /// + /// Fired when the application is paused or resumed. + /// + public static event Action OnApplicationStateChangedEvent + { + add + { + LogSubscribedToEvent("OnApplicationStateChangedEvent"); + _onApplicationStateChangedEvent += value; + } + remove + { + LogUnsubscribedToEvent("OnApplicationStateChangedEvent"); + _onApplicationStateChangedEvent -= value; + } + } + private static Action _onInterstitialAdLoadedEventV2; private static Action _onInterstitialAdLoadFailedEventV2; private static Action _onInterstitialAdDisplayedEventV2; @@ -1227,6 +1245,11 @@ public static class MaxSdkCallbacks var errorProps = MaxSdkUtils.GetDictionaryFromDictionary(eventProps, "error"); MaxCmpService.NotifyCompletedIfNeeded(errorProps); } + else if (eventName == "OnApplicationStateChanged") + { + var isPaused = MaxSdkUtils.GetBoolFromDictionary(eventProps, "isPaused"); + InvokeEvent(_onApplicationStateChangedEvent, isPaused, eventName, keepInBackground); + } // Ad Events else { @@ -1505,7 +1528,7 @@ public static class MaxSdkCallbacks if (!CanInvokeEvent(evt)) return; MaxSdkLogger.UserDebug("Invoking event: " + eventName); - if (keepInBackground) + if (ShouldInvokeInBackground(keepInBackground)) { try { @@ -1528,7 +1551,7 @@ public static class MaxSdkCallbacks if (!CanInvokeEvent(evt)) return; MaxSdkLogger.UserDebug("Invoking event: " + eventName + ". Param: " + param); - if (keepInBackground) + if (ShouldInvokeInBackground(keepInBackground)) { try { @@ -1551,7 +1574,7 @@ public static class MaxSdkCallbacks if (!CanInvokeEvent(evt)) return; MaxSdkLogger.UserDebug("Invoking event: " + eventName + ". Params: " + param1 + ", " + param2); - if (keepInBackground) + if (ShouldInvokeInBackground(keepInBackground)) { try { @@ -1574,7 +1597,7 @@ public static class MaxSdkCallbacks if (!CanInvokeEvent(evt)) return; MaxSdkLogger.UserDebug("Invoking event: " + eventName + ". Params: " + param1 + ", " + param2 + ", " + param3); - if (keepInBackground) + if (ShouldInvokeInBackground(keepInBackground)) { try { @@ -1605,6 +1628,11 @@ public static class MaxSdkCallbacks return true; } + private static bool ShouldInvokeInBackground(bool keepInBackground) + { + return MaxSdkBase.InvokeEventsOnUnityMainThread == null ? keepInBackground : !MaxSdkBase.InvokeEventsOnUnityMainThread.Value; + } + private static void LogSubscribedToEvent(string eventName) { MaxSdkLogger.D("Listener has been added to callback: " + eventName); diff --git a/MaxSdk/Version.md b/MaxSdk/Version.md index 624e225..a8f16fc 100644 --- a/MaxSdk/Version.md +++ b/MaxSdk/Version.md @@ -1,3 +1,3 @@ # AppLovin MAX Unity Plugin -To get the latest changes, see the [AppLovin MAX Unity Changelog](https://dash.applovin.com/documentation/mediation/unity/changelog). +To get the latest changes, see the [AppLovin MAX Unity Changelog](https://developers.applovin.com/en/unity/changelog). diff --git a/Mediation/BidMachine.meta b/Mediation/BidMachine.meta index 0fcdafd..4d8e78c 100644 --- a/Mediation/BidMachine.meta +++ b/Mediation/BidMachine.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ef04dde3d80394693b97aba6bf4e2043 +guid: cb8583c72675544e2a48b72f5842b9d4 labels: - al_max - al_max_export_path-MaxSdk/Mediation/BidMachine diff --git a/Mediation/BidMachine/Editor.meta b/Mediation/BidMachine/Editor.meta index 312d62d..8c9328d 100644 --- a/Mediation/BidMachine/Editor.meta +++ b/Mediation/BidMachine/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1e265a814936d4d91b402d94d1ef176f +guid: 738f8b304e76240d9a74d548a9ef1eac labels: - al_max - al_max_export_path-MaxSdk/Mediation/BidMachine/Editor diff --git a/Mediation/BidMachine/Editor/Dependencies.xml.meta b/Mediation/BidMachine/Editor/Dependencies.xml.meta index 65c7e84..c1ab220 100644 --- a/Mediation/BidMachine/Editor/Dependencies.xml.meta +++ b/Mediation/BidMachine/Editor/Dependencies.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5004667ee59064c0598e9e12aa1b90f9 +guid: 389e8627385e74195aea66b9f27a6c92 labels: - al_max - al_max_export_path-MaxSdk/Mediation/BidMachine/Editor/Dependencies.xml diff --git a/Mediation/ByteDance.meta b/Mediation/ByteDance.meta index 1e0a086..4a1f4a9 100644 --- a/Mediation/ByteDance.meta +++ b/Mediation/ByteDance.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4c565d72fc59a44ee8a7b0b01944da99 +guid: e2630939c2c7c4a4d8f68c0be1326912 labels: - al_max - al_max_export_path-MaxSdk/Mediation/ByteDance diff --git a/Mediation/ByteDance/Editor.meta b/Mediation/ByteDance/Editor.meta index 324944d..dfeaf02 100644 --- a/Mediation/ByteDance/Editor.meta +++ b/Mediation/ByteDance/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2bab5733093d84253a54126c0fde0044 +guid: c3a7d329dc2ad4d6b812c867563af411 labels: - al_max - al_max_export_path-MaxSdk/Mediation/ByteDance/Editor diff --git a/Mediation/Chartboost.meta b/Mediation/Chartboost.meta index c8ce5fc..a8c201a 100644 --- a/Mediation/Chartboost.meta +++ b/Mediation/Chartboost.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3720d1ce9b160432187c6dacef4b9370 +guid: 5a0754b40d15d4f3bbd74daa8ae53760 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Chartboost diff --git a/Mediation/Chartboost/Editor.meta b/Mediation/Chartboost/Editor.meta index bd9656e..7f71c3a 100644 --- a/Mediation/Chartboost/Editor.meta +++ b/Mediation/Chartboost/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 82f22185cdb654c04836a4fd200201e4 +guid: 5f0d60b541006441b81dc6337d7cf525 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Chartboost/Editor diff --git a/Mediation/Facebook.meta b/Mediation/Facebook.meta index ac6cac9..9c35f8c 100644 --- a/Mediation/Facebook.meta +++ b/Mediation/Facebook.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1eef95c344aae49a5bb8428ff0ba76dc +guid: 7d6a70451ec9e474abcbe1c2312930ee labels: - al_max - al_max_export_path-MaxSdk/Mediation/Facebook diff --git a/Mediation/Facebook/Editor.meta b/Mediation/Facebook/Editor.meta index 6465fad..e7a74f1 100644 --- a/Mediation/Facebook/Editor.meta +++ b/Mediation/Facebook/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f8555a3feb92149ada8f408e4d7915ed +guid: 3eef9cb24832346bba46bd0e2b68804c labels: - al_max - al_max_export_path-MaxSdk/Mediation/Facebook/Editor diff --git a/Mediation/Fyber.meta b/Mediation/Fyber.meta index d38b297..fb1fcfa 100644 --- a/Mediation/Fyber.meta +++ b/Mediation/Fyber.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0ca570c2a4f50446da716526b4aeb949 +guid: b69bcc046a0f942b083c5d524acd0e05 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Fyber diff --git a/Mediation/Fyber/Editor.meta b/Mediation/Fyber/Editor.meta index be15ea4..02a8932 100644 --- a/Mediation/Fyber/Editor.meta +++ b/Mediation/Fyber/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c45e6d13ddd03462f9c9755967048be6 +guid: 9353a92ae275b4ad290817705802cfd5 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Fyber/Editor diff --git a/Mediation/Fyber/Editor/PrivacyInfo.xcprivacy.meta b/Mediation/Fyber/Editor/PrivacyInfo.xcprivacy.meta index 5295ab8..b86f5aa 100644 --- a/Mediation/Fyber/Editor/PrivacyInfo.xcprivacy.meta +++ b/Mediation/Fyber/Editor/PrivacyInfo.xcprivacy.meta @@ -1,7 +1,8 @@ fileFormatVersion: 2 -guid: d737ad63861574b64918b243b237f6d9 +guid: a1291a5ea371742a0a61d7558959ddb4 labels: - al_max +- al_max_export_path-MaxSdk/Mediation/Fyber/Editor/PrivacyInfo.xcprivacy - al_max_export_path-MaxSdk/Mediation~HEAD/Fyber/Editor/PrivacyInfo.xcprivacy PluginImporter: externalObjects: {} diff --git a/Mediation/Google.meta b/Mediation/Google.meta index 453ed4c..e11b283 100644 --- a/Mediation/Google.meta +++ b/Mediation/Google.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a4cf14586b32143de98b48c60866011c +guid: 6ad5197cdbf644485847d8fb29a420b6 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Google diff --git a/Mediation/Google/Editor.meta b/Mediation/Google/Editor.meta index f9f6e64..0e69016 100644 --- a/Mediation/Google/Editor.meta +++ b/Mediation/Google/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0995f7e77088b4f40a6998621a23fec2 +guid: dbd0fba122c414a7495b270531c03d1f labels: - al_max - al_max_export_path-MaxSdk/Mediation/Google/Editor diff --git a/Mediation/GoogleAdManager.meta b/Mediation/GoogleAdManager.meta index 4b27a38..65c78ee 100644 --- a/Mediation/GoogleAdManager.meta +++ b/Mediation/GoogleAdManager.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7f0088cb5366b45a8bd47dc6d39a9104 +guid: 5a2b43e1f3e144dbcbc6aa5b450c0e16 labels: - al_max - al_max_export_path-MaxSdk/Mediation/GoogleAdManager diff --git a/Mediation/GoogleAdManager/Editor.meta b/Mediation/GoogleAdManager/Editor.meta index 61510f1..25608c1 100644 --- a/Mediation/GoogleAdManager/Editor.meta +++ b/Mediation/GoogleAdManager/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 60f175d291bde48c793c288610f7cf5e +guid: 60cbbf6fbf3594ee88384433b9016bf7 labels: - al_max - al_max_export_path-MaxSdk/Mediation/GoogleAdManager/Editor diff --git a/Mediation/InMobi.meta b/Mediation/InMobi.meta index 04ffa28..5dc0555 100644 --- a/Mediation/InMobi.meta +++ b/Mediation/InMobi.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c7bce7d750720455c9b0ea3f0cce9a25 +guid: 6d6669637ce0e45d990df0a9744e3718 labels: - al_max - al_max_export_path-MaxSdk/Mediation/InMobi diff --git a/Mediation/InMobi/Editor.meta b/Mediation/InMobi/Editor.meta index bbb5854..7845382 100644 --- a/Mediation/InMobi/Editor.meta +++ b/Mediation/InMobi/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1af6490c6fb17409bad05988e30e0e98 +guid: 84e8f70cb0db54f8bbc5a31fcee4dd24 labels: - al_max - al_max_export_path-MaxSdk/Mediation/InMobi/Editor diff --git a/Mediation/IronSource.meta b/Mediation/IronSource.meta index fb2e646..bf36a7a 100644 --- a/Mediation/IronSource.meta +++ b/Mediation/IronSource.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5b895a8b08f2a4ef291dd5f37cba8ca7 +guid: 233710faa34714ebe849e87e116ec944 labels: - al_max - al_max_export_path-MaxSdk/Mediation/IronSource diff --git a/Mediation/IronSource/Editor.meta b/Mediation/IronSource/Editor.meta index e5e4ca6..fb4d05f 100644 --- a/Mediation/IronSource/Editor.meta +++ b/Mediation/IronSource/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2a009f22f000b4c9c84d8c47e1acf89e +guid: 34f3ea4ef9439473ca8a8001a452714d labels: - al_max - al_max_export_path-MaxSdk/Mediation/IronSource/Editor diff --git a/Mediation/MediationAdapters.txt.meta b/Mediation/MediationAdapters.txt.meta index 719d92e..109264f 100644 --- a/Mediation/MediationAdapters.txt.meta +++ b/Mediation/MediationAdapters.txt.meta @@ -1,11 +1,6 @@ fileFormatVersion: 2 -guid: 366e0bcbac9c54cc7b41e7ebfe209ca8 +guid: de3543045917044cc9b1e19d4ba05d0a labels: - al_max - al_max_export_path-MaxSdk/Mediation/MediationAdapters.txt -- al_max_export_path-MaxSdk/Mediation~HEAD/MediationAdapters.txt -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: +timeCreated: 1609308536 diff --git a/Mediation/Mintegral.meta b/Mediation/Mintegral.meta index 3311403..087d2c3 100644 --- a/Mediation/Mintegral.meta +++ b/Mediation/Mintegral.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a6f1152190c9f4005b77172b3f827bfe +guid: 21a7fc0e7ca48454ea08a21213aed628 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Mintegral diff --git a/Mediation/Mintegral/Editor.meta b/Mediation/Mintegral/Editor.meta index f8ca0d0..0d2918b 100644 --- a/Mediation/Mintegral/Editor.meta +++ b/Mediation/Mintegral/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 894c254f71da34a2bb91fb723eccd3dd +guid: bf7e53ef2815a4ce4a353006a74ece94 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Mintegral/Editor diff --git a/Mediation/MobileFuse.meta b/Mediation/MobileFuse.meta index 3ff97e3..596e8c1 100644 --- a/Mediation/MobileFuse.meta +++ b/Mediation/MobileFuse.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aecddbfd152b9436b9e40009c599c234 +guid: e8bbe95079060473eabef2f7cccd9d8d labels: - al_max - al_max_export_path-MaxSdk/Mediation/MobileFuse diff --git a/Mediation/MobileFuse/Editor.meta b/Mediation/MobileFuse/Editor.meta index 55baf1a..e9cea36 100644 --- a/Mediation/MobileFuse/Editor.meta +++ b/Mediation/MobileFuse/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b84c70e1357e34ae68f0388870358e2b +guid: f565c966cedfc4a718c125c9a4495640 labels: - al_max - al_max_export_path-MaxSdk/Mediation/MobileFuse/Editor diff --git a/Mediation/OguryPresage.meta b/Mediation/OguryPresage.meta index de3be4b..4495d6c 100644 --- a/Mediation/OguryPresage.meta +++ b/Mediation/OguryPresage.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b6fba7e0473954c51b60d721c20de4cd +guid: b3a52c271286d41e1964d237053cf4ed labels: - al_max - al_max_export_path-MaxSdk/Mediation/OguryPresage diff --git a/Mediation/OguryPresage/Editor.meta b/Mediation/OguryPresage/Editor.meta index bb3e26c..b6016e2 100644 --- a/Mediation/OguryPresage/Editor.meta +++ b/Mediation/OguryPresage/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a9e2390d8d3224b58883953bb5b51b5a +guid: 86c4224b9f5c8449389e50e4bec806c8 labels: - al_max - al_max_export_path-MaxSdk/Mediation/OguryPresage/Editor diff --git a/Mediation/Smaato.meta b/Mediation/Smaato.meta index 82ea506..0bf2491 100644 --- a/Mediation/Smaato.meta +++ b/Mediation/Smaato.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4bfd64ef2dea145b585f5aea1e581bc3 +guid: 015ddda2fe4ea49d1b0f6497631cf958 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Smaato diff --git a/Mediation/Smaato/Editor.meta b/Mediation/Smaato/Editor.meta index 4ee9d53..bbe9aa1 100644 --- a/Mediation/Smaato/Editor.meta +++ b/Mediation/Smaato/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 55c60994832f74b64851b3d475107739 +guid: 06993d059a7b94369949fedf7b0efd26 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Smaato/Editor diff --git a/Mediation/UnityAds.meta b/Mediation/UnityAds.meta index 471f29c..1a52c06 100644 --- a/Mediation/UnityAds.meta +++ b/Mediation/UnityAds.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5375c0d27756a4bd88d6bea312d5c439 +guid: 1fc688f4b8aa64db7bdeedb2c2060f8f labels: - al_max - al_max_export_path-MaxSdk/Mediation/UnityAds diff --git a/Mediation/UnityAds/Editor.meta b/Mediation/UnityAds/Editor.meta index 9959e49..6adf2a9 100644 --- a/Mediation/UnityAds/Editor.meta +++ b/Mediation/UnityAds/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 14028cfd09e304c79b5c811e9a726a53 +guid: c3db447ec84cc42cb95c7000d150daef labels: - al_max - al_max_export_path-MaxSdk/Mediation/UnityAds/Editor diff --git a/Mediation/Verve.meta b/Mediation/Verve.meta index 14c8c62..3270bd2 100644 --- a/Mediation/Verve.meta +++ b/Mediation/Verve.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 63ff722812e014ffd9af97864371c197 +guid: 89598f675be104b839df7dae952b604a labels: - al_max - al_max_export_path-MaxSdk/Mediation/Verve diff --git a/Mediation/Verve/Editor.meta b/Mediation/Verve/Editor.meta index 294c090..b16781a 100644 --- a/Mediation/Verve/Editor.meta +++ b/Mediation/Verve/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 58e5159adc8ba4666a19524426e952e2 +guid: 0e49c9d97ef9d4150a0335ec0c80bc3d labels: - al_max - al_max_export_path-MaxSdk/Mediation/Verve/Editor diff --git a/Mediation/Vungle.meta b/Mediation/Vungle.meta index b0a3306..a278d1c 100644 --- a/Mediation/Vungle.meta +++ b/Mediation/Vungle.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cffd18767184a494dad8f019037ab252 +guid: 42c233349e3b2436185ff3675e888d03 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Vungle diff --git a/Mediation/Vungle/Editor.meta b/Mediation/Vungle/Editor.meta index 56f8636..be41da9 100644 --- a/Mediation/Vungle/Editor.meta +++ b/Mediation/Vungle/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1010e8092f71d45ffa740fa3bc771d1c +guid: 1f6e04ca16cdf4e28ba652b7dad6839c labels: - al_max - al_max_export_path-MaxSdk/Mediation/Vungle/Editor diff --git a/Mediation/Yandex.meta b/Mediation/Yandex.meta index 48ff939..04a9c54 100644 --- a/Mediation/Yandex.meta +++ b/Mediation/Yandex.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2a2fecdf1505e42a9ba7b317b3d09b22 +guid: 5cacd558d9a7740979f9a443f45c507b labels: - al_max - al_max_export_path-MaxSdk/Mediation/Yandex diff --git a/Mediation/Yandex/Editor.meta b/Mediation/Yandex/Editor.meta index aafdb90..6c75ca4 100644 --- a/Mediation/Yandex/Editor.meta +++ b/Mediation/Yandex/Editor.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cde9fb1c1947341e2b53c30db0318c7d +guid: a13c4ded03b88486cb4b7f7f6cbe0df3 labels: - al_max - al_max_export_path-MaxSdk/Mediation/Yandex/Editor