Beispiel #1
0
    public static SdkConfiguration GetSdkConfiguration()
    {
        var sdkConfigurationStr  = _MaxGetSdkConfiguration();
        var sdkConfigurationDict = MaxSdkUtils.PropsStringToDict(sdkConfigurationStr);

        return(SdkConfiguration.Create(sdkConfigurationDict));
    }
Beispiel #2
0
    private static void ShowStubRewardedInterstitialAd(string adUnitIdentifier)
    {
#if UNITY_EDITOR
        var prefabPath     = MaxSdkUtils.GetAssetPathForExportPath("MaxSdk/Prefabs/Rewarded.prefab");
        var rewardedPrefab = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath);
        var stubRewardedAd = Object.Instantiate(rewardedPrefab, Vector3.zero, Quaternion.identity);
        var grantedReward  = false;
        var rewardedTitle  = GameObject.Find("MaxRewardTitle").GetComponent <Text>();
        var rewardStatus   = GameObject.Find("MaxRewardStatus").GetComponent <Text>();
        var closeButton    = GameObject.Find("MaxRewardedCloseButton").GetComponent <Button>();
        var rewardButton   = GameObject.Find("MaxRewardButton").GetComponent <Button>();
        Object.DontDestroyOnLoad(stubRewardedAd);

        rewardedTitle.text = "MAX Rewarded Interstitial Ad:\n" + adUnitIdentifier;
        closeButton.onClick.AddListener(() =>
        {
            if (grantedReward)
            {
                MaxSdkCallbacks.Instance.ForwardEvent("name=OnRewardedInterstitialAdReceivedRewardEvent\nadUnitId=" + adUnitIdentifier + "\nrewardLabel=coins\nrewardAmount=5");
            }

            MaxSdkCallbacks.Instance.ForwardEvent("name=OnRewardedInterstitialAdHiddenEvent\nadUnitId=" + adUnitIdentifier);
            Object.Destroy(stubRewardedAd);
        });
        rewardButton.onClick.AddListener(() =>
        {
            grantedReward     = true;
            rewardStatus.text = "Reward granted. Will send reward callback on ad close.";
        });

        MaxSdkCallbacks.Instance.ForwardEvent("name=OnRewardedInterstitialAdDisplayedEvent\nadUnitId=" + adUnitIdentifier);
#endif
    }
Beispiel #3
0
        private static void AddSnapAppStoreAppIdIfNeeded(PlistDocument plist)
        {
            var snapDependencyPath = Path.Combine(PluginMediationDirectory, "Snap/Editor/Dependencies.xml");

            if (!File.Exists(snapDependencyPath))
            {
                return;
            }

            // App Store App ID is only needed for iOS versions 2.0.0.0 or newer.
            var currentVersion       = AppLovinIntegrationManager.GetCurrentVersions(snapDependencyPath);
            var iosVersionComparison = MaxSdkUtils.CompareVersions(currentVersion.Ios, AppLovinSettings.SnapAppStoreAppIdMinVersion);

            if (iosVersionComparison == MaxSdkUtils.VersionComparisonResult.Lesser)
            {
                return;
            }

            if (AppLovinSettings.Instance.SnapAppStoreAppId <= 0)
            {
                MaxSdkLogger.UserError("Snap App Store App ID is not set. Please enter a valid App ID within the AppLovin Integration Manager window.");
                return;
            }

            plist.root.SetInteger("SCAppStoreAppID", AppLovinSettings.Instance.SnapAppStoreAppId);
        }
        public AdInfo(string adInfoString)
        {
            string adUnitIdentifier;
            string networkName;
            string creativeIdentifier;
            string placement;
            string revenue;

            // NOTE: Unity Editor creates empty string
            var adInfoObject = MaxSdkUtils.PropsStringToDict(adInfoString);

            AdUnitIdentifier   = adInfoObject.TryGetValue("adUnitId", out adUnitIdentifier) ? adUnitIdentifier : "";
            NetworkName        = adInfoObject.TryGetValue("networkName", out networkName) ? networkName : "";
            CreativeIdentifier = adInfoObject.TryGetValue("creativeId", out creativeIdentifier) ? creativeIdentifier : "";
            Placement          = adInfoObject.TryGetValue("placement", out placement) ? placement : "";

            if (adInfoObject.TryGetValue("revenue", out revenue))
            {
                try
                {
                    // InvariantCulture guarantees the decimal is used for the separator even in regions that use commas as the separator
                    Revenue = double.Parse(revenue, NumberStyles.Any, CultureInfo.InvariantCulture);
                }
                catch (Exception exception)
                {
                    MaxSdkLogger.E("Failed to parse double (" + revenue + ") with exception: " + exception);
                    Revenue = -1;
                }
            }
            else
            {
                Revenue = -1;
            }
        }
Beispiel #5
0
    /// <summary>
    /// Get the SDK configuration for this user.
    ///
    /// Note: This method should be called only after SDK has been initialized.
    /// </summary>
    public static SdkConfiguration GetSdkConfiguration()
    {
        var sdkConfigurationStr  = MaxUnityPluginClass.CallStatic <string>("getSdkConfiguration");
        var sdkConfigurationDict = MaxSdkUtils.PropsStringToDict(sdkConfigurationStr);

        return(SdkConfiguration.Create(sdkConfigurationDict));
    }
Beispiel #6
0
        /// <summary>
        /// Updates the CurrentVersion fields for a given network data object.
        /// </summary>
        /// <param name="network">Network for which to update the current versions.</param>
        /// <param name="mediationPluginParentDirectory">The parent directory of where the mediation adapter plugins are imported to.</param>
        public static void UpdateCurrentVersions(Network network, string mediationPluginParentDirectory)
        {
            var dependencyFilePath = Path.Combine(mediationPluginParentDirectory, network.DependenciesFilePath);
            var currentVersions    = GetCurrentVersions(dependencyFilePath);

            network.CurrentVersions = currentVersions;

            // If AppLovin mediation plugin, get the version from MaxSdk and the latest and current version comparison.
            if (network.Name.Equals("APPLOVIN_NETWORK"))
            {
                network.CurrentVersions.Unity = MaxSdk.Version;

                var unityVersionComparison   = MaxSdkUtils.CompareVersions(network.CurrentVersions.Unity, network.LatestVersions.Unity);
                var androidVersionComparison = MaxSdkUtils.CompareVersions(network.CurrentVersions.Android, network.LatestVersions.Android);
                var iosVersionComparison     = MaxSdkUtils.CompareVersions(network.CurrentVersions.Ios, network.LatestVersions.Ios);

                // Overall version is same if all the current and latest (from db) versions are same.
                if (unityVersionComparison == VersionComparisonResult.Equal &&
                    androidVersionComparison == VersionComparisonResult.Equal &&
                    iosVersionComparison == VersionComparisonResult.Equal)
                {
                    network.CurrentToLatestVersionComparisonResult = VersionComparisonResult.Equal;
                }
                // One of the installed versions is newer than the latest versions which means that the publisher is on a beta version.
                else if (unityVersionComparison == VersionComparisonResult.Greater ||
                         androidVersionComparison == VersionComparisonResult.Greater ||
                         iosVersionComparison == VersionComparisonResult.Greater)
                {
                    network.CurrentToLatestVersionComparisonResult = VersionComparisonResult.Greater;
                }
                // We have a new version available if all Android, iOS and Unity has a newer version available in db.
                else
                {
                    network.CurrentToLatestVersionComparisonResult = VersionComparisonResult.Lesser;
                }
            }
            // For all other mediation adapters, get the version comparison using their Unity versions.
            else
            {
                // If adapter is indeed installed, compare the current (installed) and the latest (from db) versions, so that we can determine if the publisher is on an older, current or a newer version of the adapter.
                // If the publisher is on a newer version of the adapter than the db version, that means they are on a beta version.
                if (!string.IsNullOrEmpty(currentVersions.Unity))
                {
                    network.CurrentToLatestVersionComparisonResult = MaxSdkUtils.CompareUnityMediationVersions(currentVersions.Unity, network.LatestVersions.Unity);
                }

                if (!string.IsNullOrEmpty(network.CurrentVersions.Unity) && AppLovinAutoUpdater.MinAdapterVersions.ContainsKey(network.Name))
                {
                    var comparisonResult = MaxSdkUtils.CompareUnityMediationVersions(network.CurrentVersions.Unity, AppLovinAutoUpdater.MinAdapterVersions[network.Name]);
                    // Requires update if current version is lower than the min required version.
                    network.RequiresUpdate = comparisonResult < 0;
                }
                else
                {
                    // Reset value so that the Integration manager can hide the alert icon once adapter is updated.
                    network.RequiresUpdate = false;
                }
            }
        }
Beispiel #7
0
    /// <summary>
    /// Generates serialized Unity meta data to be passed to the SDK.
    /// </summary>
    /// <returns>Serialized Unity meta data.</returns>
    protected static string GenerateMetaData()
    {
        var metaData = new Dictionary <string, string>();

        metaData.Add("UnityVersion", Application.unityVersion);

        return(MaxSdkUtils.DictToPropsString(metaData));
    }
Beispiel #8
0
        private void Awake()
        {
            titleLabelStyle = new GUIStyle(EditorStyles.label)
            {
                fontSize    = 14,
                fontStyle   = FontStyle.Bold,
                fixedHeight = 20
            };

            headerLabelStyle = new GUIStyle(EditorStyles.label)
            {
                fontSize    = 12,
                fontStyle   = FontStyle.Bold,
                fixedHeight = 18
            };

            environmentValueStyle = new GUIStyle(EditorStyles.label)
            {
                alignment = TextAnchor.MiddleRight
            };

            linkLabelStyle = new GUIStyle(EditorStyles.label)
            {
                wordWrap = true,
                normal   = { textColor = Color.blue }
            };

            wrapTextLabelStyle = new GUIStyle(EditorStyles.label)
            {
                wordWrap = true
            };

            uninstallButtonStyle = new GUIStyle(EditorStyles.miniButton)
            {
                fixedWidth  = 18,
                fixedHeight = 18,
                padding     = new RectOffset(1, 1, 1, 1)
            };

            // Load uninstall icon texture.
            var uninstallIconData = File.ReadAllBytes(MaxSdkUtils.GetAssetPathForExportPath(uninstallIconExportPath));

            uninstallIcon = new Texture2D(0, 0, TextureFormat.RGBA32, false); // 1. Initial size doesn't matter here, will be automatically resized once the image asset is loaded. 2. Set mipChain to false, else the texture has a weird blurry effect.
            uninstallIcon.LoadImage(uninstallIconData);

            // Load alert icon texture.
            var alertIconData = File.ReadAllBytes(MaxSdkUtils.GetAssetPathForExportPath(alertIconExportPath));

            alertIcon = new Texture2D(0, 0, TextureFormat.RGBA32, false);
            alertIcon.LoadImage(alertIconData);

            var pluginPath = Path.Combine(AppLovinIntegrationManager.PluginParentDirectory, "MaxSdk");

            isPluginMoved = !AppLovinIntegrationManager.DefaultPluginExportPath.Equals(pluginPath);
        }
    /// <summary>
    /// Generates serialized Unity meta data to be passed to the SDK.
    /// </summary>
    /// <returns>Serialized Unity meta data.</returns>
    protected static string GenerateMetaData()
    {
        var metaData = new Dictionary <string, string>(2);

        metaData.Add("UnityVersion", Application.unityVersion);

        var graphicsMemorySize = SystemInfo.graphicsMemorySize;

        metaData.Add("GraphicsMemorySizeMegabytes", graphicsMemorySize.ToString());

        return(MaxSdkUtils.DictToPropsString(metaData));
    }
Beispiel #10
0
    public static AdInfo GetAdInfo(string adUnitIdentifier)
    {
        var adInfoString = _MaxGetAdInfo(adUnitIdentifier);

        if (string.IsNullOrEmpty(adInfoString))
        {
            return(null);
        }

        var adInfoDictionary = MaxSdkUtils.PropsStringToDict(adInfoString);

        return(new AdInfo(adInfoDictionary));
    }
Beispiel #11
0
    public static AdInfo GetAdInfo(string adUnitIdentifier)
    {
        var adInfoString = MaxUnityPluginClass.CallStatic <string>("getAdInfo", adUnitIdentifier);

        if (string.IsNullOrEmpty(adInfoString))
        {
            return(null);
        }

        var adInfoDictionary = MaxSdkUtils.PropsStringToDict(adInfoString);

        return(new AdInfo(adInfoDictionary));
    }
Beispiel #12
0
        public AdInfo(string adInfoString)
        {
            string adUnitIdentifier = "";
            string networkName      = "";

            // NOTE: Unity Editor creates empty string
            IDictionary <string, string> adInfoObject = MaxSdkUtils.PropsStringToDict(adInfoString);

            adInfoObject.TryGetValue("adUnitId", out adUnitIdentifier);
            adInfoObject.TryGetValue("networkName", out networkName);

            AdUnitIdentifier = adUnitIdentifier;
            NetworkName      = networkName;
        }
        public MediatedNetworkInfo(string networkInfoString)
        {
            string name;
            string adapterClassName;
            string adapterVersion;
            string sdkVersion;

            // NOTE: Unity Editor creates empty string
            var mediatedNetworkObject = MaxSdkUtils.PropsStringToDict(networkInfoString);

            Name             = mediatedNetworkObject.TryGetValue("name", out name) ? name : "";
            AdapterClassName = mediatedNetworkObject.TryGetValue("adapterClassName", out adapterClassName) ? adapterClassName : "";
            AdapterVersion   = mediatedNetworkObject.TryGetValue("adapterVersion", out adapterVersion) ? adapterVersion : "";
            SdkVersion       = mediatedNetworkObject.TryGetValue("sdkVersion", out sdkVersion) ? sdkVersion : "";
        }
Beispiel #14
0
    private static void CreateStubBanner(string adUnitIdentifier, BannerPosition bannerPosition)
    {
#if UNITY_EDITOR
        // Only support BottomCenter and TopCenter for now
        var bannerPrefabName = bannerPosition == BannerPosition.BottomCenter ? "BannerBottom" : "BannerTop";
        var prefabPath       = MaxSdkUtils.GetAssetPathForExportPath("MaxSdk/Prefabs/" + bannerPrefabName + ".prefab");
        var bannerPrefab     = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath);
        var stubBanner       = Object.Instantiate(bannerPrefab, Vector3.zero, Quaternion.identity);
        stubBanner.SetActive(false); // Hidden by default
        Object.DontDestroyOnLoad(stubBanner);

        var bannerText = stubBanner.GetComponentInChildren <Text>();
        bannerText.text += ":\n" + adUnitIdentifier;

        StubBanners.Add(adUnitIdentifier, stubBanner);
#endif
    }
        private static bool ShouldEmbedSnapSdk()
        {
            var snapDependencyPath = Path.Combine(PluginMediationDirectory, "Snap/Editor/Dependencies.xml");

            if (!File.Exists(snapDependencyPath))
            {
                return(false);
            }

            // Return true for UNITY_2019_3_OR_NEWER because app will crash on launch unless embedded.
#if UNITY_2019_3_OR_NEWER
            return(true);
#else
            var currentVersion       = AppLovinIntegrationManager.GetCurrentVersions(snapDependencyPath);
            var iosVersionComparison = MaxSdkUtils.CompareVersions(currentVersion.Ios, "1.0.7.2");
            return(iosVersionComparison != MaxSdkUtils.VersionComparisonResult.Lesser);
#endif
        }
Beispiel #16
0
    private static void ShowStubInterstitial(string adUnitIdentifier)
    {
#if UNITY_EDITOR
        var prefabPath         = MaxSdkUtils.GetAssetPathForExportPath("MaxSdk/Prefabs/Interstitial.prefab");
        var interstitialPrefab = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath);
        var stubInterstitial   = Object.Instantiate(interstitialPrefab, Vector3.zero, Quaternion.identity);
        var interstitialText   = GameObject.Find("MaxInterstitialTitle").GetComponent <Text>();
        var closeButton        = GameObject.Find("MaxInterstitialCloseButton").GetComponent <Button>();

        interstitialText.text += ":\n" + adUnitIdentifier;
        closeButton.onClick.AddListener(() =>
        {
            MaxSdkCallbacks.Instance.ForwardEvent("name=OnInterstitialHiddenEvent\nadUnitId=" + adUnitIdentifier);
            Object.Destroy(stubInterstitial);
        });

        MaxSdkCallbacks.Instance.ForwardEvent("name=OnInterstitialDisplayedEvent\nadUnitId=" + adUnitIdentifier);
#endif
    }
Beispiel #17
0
        private static bool GoogleNetworkAdaptersCompatible(string googleVersion, string googleAdManagerVersion, string breakingVersion)
        {
            var googleResult          = MaxSdkUtils.CompareVersions(googleVersion, breakingVersion);
            var googleAdManagerResult = MaxSdkUtils.CompareVersions(googleAdManagerVersion, breakingVersion);

            // If one is less than the breaking version and the other is not, they are not compatible.
            if (googleResult == MaxSdkUtils.VersionComparisonResult.Lesser &&
                googleAdManagerResult != MaxSdkUtils.VersionComparisonResult.Lesser)
            {
                return(false);
            }

            if (googleAdManagerResult == MaxSdkUtils.VersionComparisonResult.Lesser &&
                googleResult != MaxSdkUtils.VersionComparisonResult.Lesser)
            {
                return(false);
            }

            return(true);
        }
Beispiel #18
0
    /// <summary>
    /// Updates the CurrentVersion fields for a given network data object.
    /// </summary>
    /// <param name="network">Network for which to update the current versions.</param>
    public static void UpdateCurrentVersions(Network network)
    {
        var dependencyFilePath = Path.Combine(Application.dataPath, network.DependenciesFilePath);
        var currentVersions    = GetCurrentVersions(dependencyFilePath);

        network.CurrentVersions = currentVersions;

        // If adapter is indeed installed, compare the current (installed) and the latest (from db) versions, so that we can determine if the publisher is on an older, current or a newer version of the adapter.
        // If the publisher is on a newer version of the adapter than the db version, that means they are on a beta version.
        if (!string.IsNullOrEmpty(currentVersions.Unity))
        {
            network.CurrentToLatestVersionComparison = MaxSdkUtils.CompareUnityMediationVersions(currentVersions.Unity, network.LatestVersions.Unity);
        }

        // If AppLovin mediation plugin, get the version from MaxSdk.
        if (network.Name.Equals("APPLOVIN_NETWORK"))
        {
            network.CurrentVersions.Unity = MaxSdk.Version;
        }
    }
    /// <summary>
    /// Parses the prop string provided to a <see cref="Rect"/>.
    /// </summary>
    /// <param name="rectPropString">A prop string representing a Rect</param>
    /// <returns>A <see cref="Rect"/> the prop string represents.</returns>
    protected static Rect GetRectFromString(string rectPropString)
    {
        var    rectDict = MaxSdkUtils.PropsStringToDict(rectPropString);
        float  originX;
        float  originY;
        float  width;
        float  height;
        string output;

        rectDict.TryGetValue("origin_x", out output);
        float.TryParse(output, out originX);

        rectDict.TryGetValue("origin_y", out output);
        float.TryParse(output, out originY);

        rectDict.TryGetValue("width", out output);
        float.TryParse(output, out width);

        rectDict.TryGetValue("height", out output);
        float.TryParse(output, out height);

        return(new Rect(originX, originY, width, height));
    }
Beispiel #20
0
    public void ForwardEvent(string eventPropsStr)
    {
        var eventProps = MaxSdkUtils.PropsStringToDict(eventPropsStr);

        var eventName = eventProps["name"];

        if (eventName == "OnSdkInitializedEvent")
        {
            var sdkConfiguration = MaxSdkBase.SdkConfiguration.Create(eventProps);
            InvokeEvent(_onSdkInitializedEvent, sdkConfiguration);
        }
        else if (eventName == "OnVariablesUpdatedEvent")
        {
            InvokeEvent(_onVariablesUpdatedEvent);
        }
        else if (eventName == "OnSdkConsentDialogDismissedEvent")
        {
            InvokeEvent(_onSdkConsentDialogDismissedEvent);
        }
        // Ad Events
        else
        {
            var adUnitIdentifier = eventProps["adUnitId"];
            if (eventName == "OnBannerAdLoadedEvent")
            {
                InvokeEvent(_onBannerAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnBannerAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onBannerAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnBannerAdClickedEvent")
            {
                InvokeEvent(_onBannerAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnBannerAdExpandedEvent")
            {
                InvokeEvent(_onBannerAdExpandedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnBannerAdCollapsedEvent")
            {
                InvokeEvent(_onBannerAdCollapsedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdLoadedEvent")
            {
                InvokeEvent(_onMRecAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onMRecAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnMRecAdClickedEvent")
            {
                InvokeEvent(_onMRecAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdExpandedEvent")
            {
                InvokeEvent(_onMRecAdExpandedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdCollapsedEvent")
            {
                InvokeEvent(_onMRecAdCollapsedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnCrossPromoAdLoadedEvent")
            {
                InvokeEvent(_onCrossPromoAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnCrossPromoAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onCrossPromoAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnCrossPromoAdClickedEvent")
            {
                InvokeEvent(_onCrossPromoAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnCrossPromoAdExpandedEvent")
            {
                InvokeEvent(_onCrossPromoAdExpandedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnCrossPromoAdCollapsedEvent")
            {
                InvokeEvent(_onCrossPromoAdCollapsedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialLoadedEvent")
            {
                InvokeEvent(_onInterstitialLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onInterstitialLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnInterstitialHiddenEvent")
            {
                InvokeEvent(_onInterstitialHiddenEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialDisplayedEvent")
            {
                InvokeEvent(_onInterstitialDisplayedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialAdFailedToDisplayEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onInterstitialAdFailedToDisplayEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnInterstitialClickedEvent")
            {
                InvokeEvent(_onInterstitialClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdLoadedEvent")
            {
                InvokeEvent(_onRewardedAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onRewardedAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnRewardedAdDisplayedEvent")
            {
                InvokeEvent(_onRewardedAdDisplayedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdHiddenEvent")
            {
                InvokeEvent(_onRewardedAdHiddenEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdClickedEvent")
            {
                InvokeEvent(_onRewardedAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdFailedToDisplayEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onRewardedAdFailedToDisplayEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnRewardedAdReceivedRewardEvent")
            {
                var reward = new MaxSdkBase.Reward {
                    Label = eventProps["rewardLabel"]
                };

                int.TryParse(eventProps["rewardAmount"], out reward.Amount);

                InvokeEvent(_onRewardedAdReceivedRewardEvent, adUnitIdentifier, reward);
            }
            else if (eventName == "OnRewardedInterstitialAdLoadedEvent")
            {
                InvokeEvent(_onRewardedInterstitialAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedInterstitialAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onRewardedInterstitialAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnRewardedInterstitialAdDisplayedEvent")
            {
                InvokeEvent(_onRewardedInterstitialAdDisplayedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedInterstitialAdHiddenEvent")
            {
                InvokeEvent(_onRewardedInterstitialAdHiddenEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedInterstitialAdClickedEvent")
            {
                InvokeEvent(_onRewardedInterstitialAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedInterstitialAdFailedToDisplayEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(_onRewardedInterstitialAdFailedToDisplayEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnRewardedInterstitialAdReceivedRewardEvent")
            {
                var reward = new MaxSdkBase.Reward {
                    Label = eventProps["rewardLabel"]
                };

                int.TryParse(eventProps["rewardAmount"], out reward.Amount);

                InvokeEvent(_onRewardedInterstitialAdReceivedRewardEvent, adUnitIdentifier, reward);
            }
            else
            {
                MaxSdkLogger.UserWarning("Unknown MAX Ads event fired: " + eventName);
            }
        }
    }
    /// <summary>
    /// Draws the network specific details for a given network.
    /// </summary>
    private void DrawNetworkDetailRow(Network network)
    {
        string action;
        var    currentVersion = network.CurrentVersions.Unity;
        var    latestVersion  = network.LatestVersions.Unity;
        bool   isActionEnabled;
        bool   isInstalled;

        if (string.IsNullOrEmpty(currentVersion))
        {
            action          = "Install";
            currentVersion  = "Not Installed";
            isActionEnabled = true;
            isInstalled     = false;
        }
        else
        {
            isInstalled = true;

            var comparison = network.CurrentToLatestVersionComparisonResult;
            // A newer version is available
            if (comparison == VersionComparisonResult.Lesser)
            {
                action          = "Upgrade";
                isActionEnabled = true;
            }
            // Current installed version is newer than latest version from DB (beta version)
            else if (comparison == VersionComparisonResult.Greater)
            {
                action          = "Installed";
                isActionEnabled = false;
            }
            // Already on the latest version
            else
            {
                action          = "Installed";
                isActionEnabled = false;
            }
        }

        GUILayout.Space(4);
        using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandHeight(false)))
        {
            GUILayout.Space(5);
            EditorGUILayout.LabelField(new GUIContent(network.DisplayName), networkWidthOption);
            EditorGUILayout.LabelField(new GUIContent(currentVersion), versionWidthOption);
            GUILayout.Space(3);
            EditorGUILayout.LabelField(new GUIContent(latestVersion), versionWidthOption);
            GUILayout.Space(3);
            GUILayout.FlexibleSpace();

            if (network.RequiresUpdate)
            {
                GUILayout.Label(new GUIContent {
                    image = alertIcon, tooltip = "Adapter not compatible, please update to the latest version."
                }, uninstallButtonStyle);
            }

            GUI.enabled = isActionEnabled;
            if (GUILayout.Button(new GUIContent(action), fieldWidth))
            {
                // Download the plugin.
                AppLovinEditorCoroutine.StartCoroutine(AppLovinIntegrationManager.Instance.DownloadPlugin(network));
            }

            GUI.enabled = true;
            GUILayout.Space(2);

            GUI.enabled = isInstalled;
            if (GUILayout.Button(new GUIContent {
                image = uninstallIcon, tooltip = "Uninstall"
            }, uninstallButtonStyle))
            {
                EditorUtility.DisplayProgressBar("Integration Manager", "Deleting " + network.Name + "...", 0.5f);
                foreach (var pluginFilePath in network.PluginFilePaths)
                {
                    FileUtil.DeleteFileOrDirectory(Path.Combine("Assets", pluginFilePath));
                }

                AppLovinIntegrationManager.UpdateCurrentVersions(network);

                // Refresh UI
                AssetDatabase.Refresh();
                EditorUtility.ClearProgressBar();
            }

            GUI.enabled = true;
            GUILayout.Space(5);
        }

        // Custom integration for AdMob where the user can enter the Android and iOS App IDs.
        if (network.Name.Equals("ADMOB_NETWORK") && isInstalled)
        {
            // Custom integration requires Google AdMob adapter version newer than android_19.0.1.0_ios_7.57.0.0.
            if (MaxSdkUtils.CompareUnityMediationVersions(network.CurrentVersions.Unity, "android_19.0.1.0_ios_7.57.0.0") == VersionComparisonResult.Greater)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(20);
                using (new EditorGUILayout.VerticalScope("box"))
                {
                    GUILayout.Space(2);
                    if (MaxSdkUtils.CompareUnityMediationVersions(network.CurrentVersions.Unity, "android_19.2.0.0_ios_7.61.0.0") == VersionComparisonResult.Greater)
                    {
                        AppLovinSettings.Instance.AdMobAndroidAppId = DrawTextField("App ID (Android)", AppLovinSettings.Instance.AdMobAndroidAppId, networkWidthOption);
                        AppLovinSettings.Instance.AdMobIosAppId     = DrawTextField("App ID (iOS)", AppLovinSettings.Instance.AdMobIosAppId, networkWidthOption);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("The current version of AppLovin MAX plugin requires Google adapter version newer than android_19.2.0.0_ios_7.61.0.0 to enable auto-export of AdMob App ID.", MessageType.Warning);
                    }
                }

                GUILayout.EndHorizontal();
            }
        }
    }
Beispiel #22
0
    public void ForwardEvent(string eventPropsStr)
    {
        var eventProps = MaxSdkUtils.PropsStringToDict(eventPropsStr);

        var eventName = eventProps["name"];

        if (eventName == "OnSdkInitializedEvent")
        {
            var consentDialogStateStr = eventProps["consentDialogState"];

            var sdkConfiguration = new MaxSdkBase.SdkConfiguration();

            if ("1".Equals(consentDialogStateStr))
            {
                sdkConfiguration.ConsentDialogState = MaxSdkBase.ConsentDialogState.Applies;
            }
            else if ("2".Equals(consentDialogStateStr))
            {
                sdkConfiguration.ConsentDialogState = MaxSdkBase.ConsentDialogState.DoesNotApply;
            }
            else
            {
                sdkConfiguration.ConsentDialogState = MaxSdkBase.ConsentDialogState.Unknown;
            }

            InvokeEvent(OnSdkInitializedEvent, sdkConfiguration);
        }
        else if (eventName == "OnVariablesUpdatedEvent")
        {
            InvokeEvent(OnVariablesUpdatedEvent);
        }
        // Ad Events
        else
        {
            var adUnitIdentifier = eventProps["adUnitId"];
            if (eventName == "OnBannerAdLoadedEvent")
            {
                InvokeEvent(OnBannerAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnBannerAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(OnBannerAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnBannerAdClickedEvent")
            {
                InvokeEvent(OnBannerAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnBannerAdExpandedEvent")
            {
                InvokeEvent(OnBannerAdExpandedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnBannerAdCollapsedEvent")
            {
                InvokeEvent(OnBannerAdCollapsedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdLoadedEvent")
            {
                InvokeEvent(OnMRecAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(OnMRecAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnMRecAdClickedEvent")
            {
                InvokeEvent(OnMRecAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdExpandedEvent")
            {
                InvokeEvent(OnMRecAdExpandedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnMRecAdCollapsedEvent")
            {
                InvokeEvent(OnMRecAdCollapsedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialLoadedEvent")
            {
                InvokeEvent(OnInterstitialLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(OnInterstitialLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnInterstitialHiddenEvent")
            {
                InvokeEvent(OnInterstitialHiddenEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialDisplayedEvent")
            {
                InvokeEvent(OnInterstitialDisplayedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnInterstitialAdFailedToDisplayEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(OnInterstitialAdFailedToDisplayEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnInterstitialClickedEvent")
            {
                InvokeEvent(OnInterstitialClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdLoadedEvent")
            {
                InvokeEvent(OnRewardedAdLoadedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdLoadFailedEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(OnRewardedAdLoadFailedEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnRewardedAdDisplayedEvent")
            {
                InvokeEvent(OnRewardedAdDisplayedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdHiddenEvent")
            {
                InvokeEvent(OnRewardedAdHiddenEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdClickedEvent")
            {
                InvokeEvent(OnRewardedAdClickedEvent, adUnitIdentifier);
            }
            else if (eventName == "OnRewardedAdFailedToDisplayEvent")
            {
                var errorCode = 0;
                int.TryParse(eventProps["errorCode"], out errorCode);
                InvokeEvent(OnRewardedAdFailedToDisplayEvent, adUnitIdentifier, errorCode);
            }
            else if (eventName == "OnRewardedAdReceivedRewardEvent")
            {
                var reward = new MaxSdkBase.Reward {
                    Label = eventProps["rewardLabel"]
                };

                int.TryParse(eventProps["rewardAmount"], out reward.Amount);

                InvokeEvent(OnRewardedAdReceivedRewardEvent, adUnitIdentifier, reward);
            }
            else
            {
                Debug.LogWarning("[AppLovin MAX] Unknown MAX Ads event fired: " + eventName);
            }
        }
    }
Beispiel #23
0
 /// <summary>
 /// Track an event using AppLovin.
 /// </summary>
 /// <param name="name">An event from the list of pre-defined events may be found in MaxEvents.cs as part of the AppLovin SDK framework.</param>
 /// <param name="parameters">A dictionary containing key-value pairs further describing this event.</param>
 public static void TrackEvent(string name, IDictionary <string, string> parameters = null)
 {
     _MaxTrackEvent(name, MaxSdkUtils.DictToPropsString(parameters));
 }
Beispiel #24
0
 /// <summary>
 /// Set non-transparent background color for banners to be fully functional.
 /// </summary>
 /// <param name="adUnitIdentifier">Ad unit identifier of the banner to set background color for</param>
 /// <param name="color">A background color to set for the ad</param>
 public static void SetBannerBackgroundColor(string adUnitIdentifier, Color color)
 {
     ValidateAdUnitIdentifier(adUnitIdentifier, "set background color");
     _MaxSetBannerBackgroundColor(adUnitIdentifier, MaxSdkUtils.ParseColor(color));
 }
Beispiel #25
0
    /// <summary>
    /// Returns the list of available mediation networks.
    ///
    /// Please call this method after the SDK has initialized.
    /// </summary>
    public static List <MaxSdkBase.MediatedNetworkInfo> GetAvailableMediatedNetworks()
    {
        var serializedNetworks = _MaxGetAvailableMediatedNetworks();

        return(MaxSdkUtils.PropsStringsToList <MaxSdkBase.MediatedNetworkInfo>(serializedNetworks));
    }
Beispiel #26
0
 /// <summary>
 /// Set non-transparent background color for banners to be fully functional.
 /// </summary>
 /// <param name="adUnitIdentifier">Ad unit identifier of the banner to set background color for</param>
 /// <param name="color">A background color to set for the ad</param>
 /// <returns></returns>
 public static void SetBannerBackgroundColor(string adUnitIdentifier, Color color)
 {
     ValidateAdUnitIdentifier(adUnitIdentifier, "set background color");
     MaxUnityPluginClass.CallStatic("setBannerBackgroundColor", adUnitIdentifier, MaxSdkUtils.ParseColor(color));
 }
Beispiel #27
0
 /// <summary>
 /// Track an event using AppLovin.
 /// </summary>
 /// <param name="name">An event from the list of pre-defined events may be found in MaxEvents.cs as part of the AppLovin SDK framework.</param>
 /// <param name="parameters">A dictionary containing key-value pairs further describing this event.</param>
 public static void TrackEvent(string name, IDictionary <string, string> parameters = null)
 {
     MaxUnityPluginClass.CallStatic("trackEvent", name, MaxSdkUtils.DictToPropsString(parameters));
 }
Beispiel #28
0
        /// <summary>
        /// Draws the network specific details for a given network.
        /// </summary>
        private void DrawNetworkDetailRow(Network network)
        {
            string action;
            var    currentVersion = network.CurrentVersions.Unity;
            var    latestVersion  = network.LatestVersions.Unity;
            bool   isActionEnabled;
            bool   isInstalled;

            if (string.IsNullOrEmpty(currentVersion))
            {
                action          = "Install";
                currentVersion  = "Not Installed";
                isActionEnabled = true;
                isInstalled     = false;
            }
            else
            {
                isInstalled = true;

                var comparison = network.CurrentToLatestVersionComparisonResult;
                // A newer version is available
                if (comparison == VersionComparisonResult.Lesser)
                {
                    action          = "Upgrade";
                    isActionEnabled = true;
                }
                // Current installed version is newer than latest version from DB (beta version)
                else if (comparison == VersionComparisonResult.Greater)
                {
                    action          = "Installed";
                    isActionEnabled = false;
                }
                // Already on the latest version
                else
                {
                    action          = "Installed";
                    isActionEnabled = false;
                }
            }

            GUILayout.Space(4);
            using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandHeight(false)))
            {
                GUILayout.Space(5);
                EditorGUILayout.LabelField(new GUIContent(network.DisplayName), networkWidthOption);
                EditorGUILayout.LabelField(new GUIContent(currentVersion), versionWidthOption);
                GUILayout.Space(3);
                EditorGUILayout.LabelField(new GUIContent(latestVersion), versionWidthOption);
                GUILayout.Space(3);
                GUILayout.FlexibleSpace();

                if (network.RequiresUpdate)
                {
                    GUILayout.Label(new GUIContent {
                        image = alertIcon, tooltip = "Adapter not compatible, please update to the latest version."
                    }, iconStyle);
                }
                else if ((network.Name.Equals("ADMOB_NETWORK") || network.Name.Equals("GOOGLE_AD_MANAGER_NETWORK")) && shouldShowGoogleWarning)
                {
                    GUILayout.Label(new GUIContent {
                        image = warningIcon, tooltip = "You may see unexpected errors if you use different versions of the AdMob and Google Ad Manager adapter SDKs."
                    }, iconStyle);
                }

                GUI.enabled = isActionEnabled;
                if (GUILayout.Button(new GUIContent(action), fieldWidth))
                {
                    // Download the plugin.
                    AppLovinEditorCoroutine.StartCoroutine(AppLovinIntegrationManager.Instance.DownloadPlugin(network));
                }

                GUI.enabled = true;
                GUILayout.Space(2);

                GUI.enabled = isInstalled;
                if (GUILayout.Button(new GUIContent {
                    image = uninstallIcon, tooltip = "Uninstall"
                }, iconStyle))
                {
                    EditorUtility.DisplayProgressBar("Integration Manager", "Deleting " + network.Name + "...", 0.5f);
                    var pluginRoot = AppLovinIntegrationManager.MediationSpecificPluginParentDirectory;
                    foreach (var pluginFilePath in network.PluginFilePaths)
                    {
                        FileUtil.DeleteFileOrDirectory(Path.Combine(pluginRoot, pluginFilePath));
                    }

                    AppLovinIntegrationManager.UpdateCurrentVersions(network, pluginRoot);

                    // Refresh UI
                    AssetDatabase.Refresh();
                    EditorUtility.ClearProgressBar();
                }

                GUI.enabled = true;
                GUILayout.Space(5);
            }

            if (isInstalled)
            {
                // Custom integration for AdMob where the user can enter the Android and iOS App IDs.
                if (network.Name.Equals("ADMOB_NETWORK"))
                {
                    // Custom integration requires Google AdMob adapter version newer than android_19.0.1.0_ios_7.57.0.0.
                    if (MaxSdkUtils.CompareUnityMediationVersions(network.CurrentVersions.Unity, "android_19.0.1.0_ios_7.57.0.0") == VersionComparisonResult.Greater)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Space(20);
                        using (new EditorGUILayout.VerticalScope("box"))
                        {
                            string requiredVersion;
                            string warningMessage;
                            if (isPluginMoved)
                            {
                                requiredVersion = "android_19.6.0.1_ios_7.69.0.0";
                                warningMessage  = "Looks like the MAX plugin has been moved to a different directory. This requires Google adapter version newer than " + requiredVersion + " for auto-export of AdMob App ID to work correctly.";
                            }
                            else
                            {
                                requiredVersion = "android_19.2.0.0_ios_7.61.0.0";
                                warningMessage  = "The current version of AppLovin MAX plugin requires Google adapter version newer than " + requiredVersion + " to enable auto-export of AdMob App ID.";
                            }

                            GUILayout.Space(2);
                            if (MaxSdkUtils.CompareUnityMediationVersions(network.CurrentVersions.Unity, requiredVersion) == VersionComparisonResult.Greater)
                            {
                                AppLovinSettings.Instance.AdMobAndroidAppId = DrawTextField("App ID (Android)", AppLovinSettings.Instance.AdMobAndroidAppId, networkWidthOption);
                                AppLovinSettings.Instance.AdMobIosAppId     = DrawTextField("App ID (iOS)", AppLovinSettings.Instance.AdMobIosAppId, networkWidthOption);
                            }
                            else
                            {
                                EditorGUILayout.HelpBox(warningMessage, MessageType.Warning);
                            }
                        }

                        GUILayout.EndHorizontal();
                    }
                }
                // Snap requires SCAppStoreAppID to be set starting adapter version 2.0.0.0 or newer. Show a text field for the publisher to input the App ID.
                else if (network.Name.Equals("SNAP_NETWORK") &&
                         MaxSdkUtils.CompareVersions(network.CurrentVersions.Ios, AppLovinSettings.SnapAppStoreAppIdMinVersion) != VersionComparisonResult.Lesser)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(20);
                    using (new EditorGUILayout.VerticalScope("box"))
                    {
                        GUILayout.Space(2);
                        GUILayout.BeginHorizontal();
                        GUILayout.Space(4);
                        EditorGUILayout.LabelField(new GUIContent("App Store App ID (iOS)"), networkWidthOption);
                        GUILayout.Space(4);
                        AppLovinSettings.Instance.SnapAppStoreAppId = EditorGUILayout.IntField(AppLovinSettings.Instance.SnapAppStoreAppId);
                        GUILayout.Space(4);
                        GUILayout.EndHorizontal();
                        GUILayout.Space(2);
                    }

                    GUILayout.EndHorizontal();
                }
            }
        }
Beispiel #29
0
    /// <summary>
    /// Returns the list of available mediation networks.
    ///
    /// Please call this method after the SDK has initialized.
    /// </summary>
    public static List <MaxSdkBase.MediatedNetworkInfo> GetAvailableMediatedNetworks()
    {
        var serializedNetworks = MaxUnityPluginClass.CallStatic <string>("getAvailableMediatedNetworks");

        return(MaxSdkUtils.PropsStringsToList <MaxSdkBase.MediatedNetworkInfo>(serializedNetworks));
    }