diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Editor/Dependencies.xml b/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Editor/Dependencies.xml
index cf2a52e..90808e6 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Editor/Dependencies.xml
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Editor/Dependencies.xml
@@ -1,10 +1,9 @@
-
-
+
-
+
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar b/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar
index ba3fbcb..8e3dc10 100644
Binary files a/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar and b/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/Android/applovin-max-unity-plugin.aar differ
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/iOS/MAUnityPlugin.mm b/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/iOS/MAUnityPlugin.mm
index c7090f6..95d14aa 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/iOS/MAUnityPlugin.mm
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/AppLovin/Plugins/iOS/MAUnityPlugin.mm
@@ -8,7 +8,7 @@
#import "MAUnityAdManager.h"
-#define VERSION @"8.5.1"
+#define VERSION @"8.6.1"
#define NSSTRING(_X) ( (_X != NULL) ? [NSString stringWithCString: _X encoding: NSStringEncodingConversionAllowLossy].al_stringByTrimmingWhitespace : nil)
@interface NSString (ALUtils)
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinInitialize.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinInitialize.cs
index 58fc4a1..7c1cdc8 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinInitialize.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinInitialize.cs
@@ -73,9 +73,14 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
"MaxSdk/Version.md.meta",
// The alert_icon.png has been renamed to error_icon.png.
- "MaxSdk/Resources/Images/alert_icon.png"
+ "MaxSdk/Resources/Images/alert_icon.png",
+ "MaxSdk/Resources/Images/alert_icon.png.meta",
- // TODO: Add MaxTargetingData and MaxUserSegment when the plugin has enough traction.
+ // `TargetingData` has been removed and we no longer set `UserSegment` through the Unity Plugin.
+ "MaxSdk/Scripts/MaxUserSegment.cs",
+ "MaxSdk/Scripts/MaxUserSegment.cs.meta",
+ "MaxSdk/Scripts/MaxTargetingData.cs",
+ "MaxSdk/Scripts/MaxTargetingData.cs.meta"
};
static AppLovinInitialize()
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs
index 38c3be3..236b952 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManager.cs
@@ -97,6 +97,10 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
public string Title;
public string Message;
public string Url;
+ public string MinimumPluginVersion;
+ public string MaximumPluginVersion;
+ public string MinimumUnityVersion;
+ public string MaximumUnityVersion;
public Severity Severity;
@@ -119,6 +123,13 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
break;
}
}
+
+ public bool ShouldShowAlert()
+ {
+ var pluginVersionValid = MaxSdkUtils.IsVersionInRange(MaxSdk.Version, MinimumPluginVersion, MaximumPluginVersion);
+ var unityVersionValid = MaxSdkUtils.IsVersionInRange(Application.unityVersion, MinimumUnityVersion, MaximumUnityVersion);
+ return pluginVersionValid && unityVersionValid;
+ }
}
///
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs
index 91e200b..244a76a 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinIntegrationManagerWindow.cs
@@ -8,6 +8,7 @@
using System;
using System.Collections;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
@@ -223,17 +224,21 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
DrawPluginDetails();
// Draw alerts
- if (pluginData != null && pluginData.Alerts != null && pluginData.Alerts.Length > 0)
+ if (pluginData != null && pluginData.Alerts != null)
{
- EditorGUILayout.BeginHorizontal();
- var showAlertDetails = DrawExpandCollapseButton(KeyShowAlerts);
- EditorGUILayout.LabelField("Alerts", titleLabelStyle, GUILayout.Width(45));
- DrawAlertCount();
- GUILayout.FlexibleSpace();
- EditorGUILayout.EndHorizontal();
- if (showAlertDetails)
+ var alertsToShow = pluginData.Alerts.Where(alert => alert.ShouldShowAlert()).ToList();
+ if (alertsToShow.Count > 0)
{
- DrawAlerts();
+ EditorGUILayout.BeginHorizontal();
+ var showAlertDetails = DrawExpandCollapseButton(KeyShowAlerts);
+ EditorGUILayout.LabelField("Alerts", titleLabelStyle, GUILayout.Width(45));
+ DrawAlertCount(alertsToShow);
+ GUILayout.FlexibleSpace();
+ EditorGUILayout.EndHorizontal();
+ if (showAlertDetails)
+ {
+ DrawAlerts(alertsToShow);
+ }
}
}
@@ -386,13 +391,13 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
///
/// Draw the number of each alert type next to the alert section header.
///
- private void DrawAlertCount()
+ private void DrawAlertCount(List alerts)
{
if (pluginData == null) return;
- var infoAlertsCount = pluginData.Alerts.Count(alert => alert.Severity == Severity.Info);
- var warningAlertsCount = pluginData.Alerts.Count(alert => alert.Severity == Severity.Warning);
- var errorAlertsCount = pluginData.Alerts.Count(alert => alert.Severity == Severity.Error);
+ var infoAlertsCount = alerts.Count(alert => alert.Severity == Severity.Info);
+ var warningAlertsCount = alerts.Count(alert => alert.Severity == Severity.Warning);
+ var errorAlertsCount = alerts.Count(alert => alert.Severity == Severity.Error);
GUILayout.Label(infoIcon, GUILayout.Width(20), GUILayout.Height(20));
EditorGUILayout.LabelField(AlertCountToString(infoAlertsCount), GUILayout.Width(20));
@@ -405,24 +410,24 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
///
/// Draw the list of alerts grouped by severity.
///
- private void DrawAlerts()
+ private void DrawAlerts(List alerts)
{
GUILayout.BeginHorizontal();
GUILayout.Space(10);
using (new EditorGUILayout.VerticalScope("box"))
{
- DrawAlertsOfType(Severity.Error);
- DrawAlertsOfType(Severity.Warning);
- DrawAlertsOfType(Severity.Info);
+ DrawAlertsOfType(alerts, Severity.Error);
+ DrawAlertsOfType(alerts, Severity.Warning);
+ DrawAlertsOfType(alerts, Severity.Info);
}
GUILayout.Space(5);
GUILayout.EndHorizontal();
}
- private void DrawAlertsOfType(Severity severity)
+ private void DrawAlertsOfType(List alerts, Severity severity)
{
- var alertsOfType = pluginData.Alerts.Where(alert => alert.Severity == severity).ToList();
+ var alertsOfType = alerts.Where(alert => alert.Severity == severity).ToList();
foreach (var alert in alertsOfType)
{
DrawAlert(alert);
@@ -640,9 +645,9 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
GUI.enabled = networkButtonsEnabled && isInstalled;
if (GUILayout.Button(new GUIContent {image = uninstallIcon, tooltip = "Uninstall"}, iconStyle))
{
- EditorUtility.DisplayProgressBar("Integration Manager", "Deleting " + network.Name + "...", 0.5f);
AppLovinPackageManager.RemoveNetwork(network);
- EditorUtility.ClearProgressBar();
+ AppLovinPackageManager.UpdateCurrentVersions(network);
+ UpdateShouldShowGoogleWarningIfNeeded();
}
GUI.enabled = true;
@@ -790,11 +795,6 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
GUILayout.Space(4);
GUILayout.Space(4);
- if(AppLovinSettings.Instance.QualityServiceEnabled)
- {
- AppLovinSettings.Instance.AdReviewKey = DrawTextField("AppLovin Ad Review Key", AppLovinSettings.Instance.AdReviewKey, GUILayout.Width(PrivacySettingLabelWidth), privacySettingFieldWidthOption);
- }
- GUILayout.Space(4);
}
GUILayout.Space(5);
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPackageManager.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPackageManager.cs
index 75b0a77..0945743 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPackageManager.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPackageManager.cs
@@ -263,6 +263,9 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
/// otherwise, deletes the adapter from the Assets folder.
internal static void DeleteDuplicateAdapter(Network network, bool keepAssetsAdapter)
{
+ // Skip duplicate removal logic for our plugin.
+ if (network.Name.Equals("APPLOVIN_NETWORK")) return;
+
if (keepAssetsAdapter)
{
var appLovinManifest = AppLovinUpmManifest.Load();
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs
index 094feb8..475481d 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPostProcessiOS.cs
@@ -284,13 +284,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
var currentIosVersion = network.CurrentVersions.Ios;
if (string.IsNullOrEmpty(currentIosVersion)) return false;
- var minIosVersion = libraryToEmbed.MinVersion;
- var maxIosVersion = libraryToEmbed.MaxVersion;
-
- var greaterThanOrEqualToMinVersion = string.IsNullOrEmpty(minIosVersion) || MaxSdkUtils.CompareVersions(currentIosVersion, minIosVersion) != MaxSdkUtils.VersionComparisonResult.Lesser;
- var lessThanOrEqualToMaxVersion = string.IsNullOrEmpty(maxIosVersion) || MaxSdkUtils.CompareVersions(currentIosVersion, maxIosVersion) != MaxSdkUtils.VersionComparisonResult.Greater;
-
- return greaterThanOrEqualToMinVersion && lessThanOrEqualToMaxVersion;
+ return MaxSdkUtils.IsVersionInRange(currentIosVersion, libraryToEmbed.MinVersion, libraryToEmbed.MaxVersion);
}
private static List GetDynamicLibraryPathsInProjectToEmbed(string podsDirectory, List dynamicLibrariesToEmbed)
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs
index e4101d0..2df7e0a 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessAndroid.cs
@@ -23,7 +23,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
private const string ElementNameAndroidPackage = "androidPackage";
private const string AttributeNameSpec = "spec";
private const string UmpDependencyPackage = "com.google.android.ump:user-messaging-platform:";
- private const string UmpDependencyVersion = "2.1.0";
+ private const string UmpDependencyVersion = "4.0.0";
public void OnPreprocessBuild(BuildReport report)
{
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs
index e99ea7b..19729a1 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/IntegrationManager/Editor/AppLovinPreProcessiOS.cs
@@ -26,7 +26,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
private const string AttributeNameName = "name";
private const string AttributeNameVersion = "version";
private const string UmpDependencyPod = "GoogleUserMessagingPlatform";
- private const string UmpDependencyVersion = "~> 2.1";
+ private const string UmpDependencyVersion = "~> 3.1";
private static void AddGoogleCmpDependencyIfNeeded()
{
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdk.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdk.cs
index 9a0cc1c..3012851 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdk.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdk.cs
@@ -14,7 +14,7 @@ public class MaxSdk :
MaxSdkUnityEditor
#endif
{
- private const string _version = "8.5.1";
+ private const string _version = "8.6.1";
///
/// Returns the current plugin version.
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkAndroid.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkAndroid.cs
index 4834a8e..1b45c0b 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkAndroid.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkAndroid.cs
@@ -812,7 +812,9 @@ public class MaxSdkAndroid : MaxSdkBase
/// A dictionary containing key-value pairs further describing this event.
public static void TrackEvent(string name, IDictionary parameters = null)
{
- MaxUnityPluginClass.CallStatic("trackEvent", name, Json.Serialize(parameters));
+ // Convert null to "{}" to avoid Unity sending the literal "null" to Android.
+ var jsonString = ( parameters == null ) ? EmptyJson : Json.Serialize(parameters);
+ MaxUnityPluginClass.CallStatic("trackEvent", name, jsonString);
}
#endregion
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkBase.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkBase.cs
index 998b09e..2c50ee3 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkBase.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkBase.cs
@@ -14,6 +14,8 @@ using System.Runtime.InteropServices;
public abstract class MaxSdkBase
{
+ protected const string EmptyJson = "{}";
+
///
/// This enum represents the user's geography used to determine the type of consent flow shown to the user.
///
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkUtils.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkUtils.cs
index 4ae94cf..7b8ff0c 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkUtils.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkUtils.cs
@@ -488,6 +488,13 @@ public static class MaxSdkUtils
}
}
+ public static bool IsVersionInRange(string currentVersion, string minVersion, string maxVersion)
+ {
+ var greaterThanOrEqualToMin = string.IsNullOrEmpty(minVersion) || MaxSdkUtils.CompareVersions(currentVersion, minVersion) != MaxSdkUtils.VersionComparisonResult.Lesser;
+ var lessThanOrEqualToMax = string.IsNullOrEmpty(maxVersion) || MaxSdkUtils.CompareVersions(currentVersion, maxVersion) != MaxSdkUtils.VersionComparisonResult.Greater;
+ return greaterThanOrEqualToMin && lessThanOrEqualToMax;
+ }
+
///
/// Compares its two arguments for order. Returns , ,
/// or as the first version is less than, equal to, or greater than the second.
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkiOS.cs b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkiOS.cs
index 01faa16..ab630d8 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkiOS.cs
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/Scripts/MaxSdkiOS.cs
@@ -1027,7 +1027,9 @@ public class MaxSdkiOS : MaxSdkBase
/// A dictionary containing key-value pairs further describing this event.
public static void TrackEvent(string name, IDictionary parameters = null)
{
- _MaxTrackEvent(name, Json.Serialize(parameters));
+ // Convert null to "{}" to avoid Unity sending the literal "null" to iOS.
+ var jsonString = ( parameters == null ) ? EmptyJson : Json.Serialize(parameters);
+ _MaxTrackEvent(name, jsonString);
}
#endregion
diff --git a/Packages/com.bywaystudios.applovin.mediation.ads/package.json b/Packages/com.bywaystudios.applovin.mediation.ads/package.json
index cb260fe..ff2f842 100644
--- a/Packages/com.bywaystudios.applovin.mediation.ads/package.json
+++ b/Packages/com.bywaystudios.applovin.mediation.ads/package.json
@@ -1,7 +1,7 @@
{
"name": "com.bywaystudios.applovin.mediation.ads",
"displayName": "AppLovin MAX Mediation Plugin for Unity",
- "version": "8.5.1-exp.5",
+ "version": "8.6.1-exp.1",
"description": "AppLovin turns mobile into the medium of choice for advertisers.\n\nOUR MISSION\n\nEnable advertisers to make ROI-based marketing decisions and deliver relevant content on mobile.\n\nOur marketing platform reaches new users and matches them with relevant brands - ensuring you reach the users that are likely to engage.\n\nWe deliver relevant content to over a billion mobile consumers every month. With AppLovin, advertisers attain their mobile marketing goals.\n\nModified by Byway Studios",
"unity": "2019.2",
"dependencies": {