コード例 #1
0
        private static void TestEmitRewardedVideoReceivedRewardEvent(string adUnitId, string label, object amount,
                                                                     bool shouldFail = false)
        {
            const string successMessage = "OnRewardedVideoReceivedRewardEvent triggered.";
            Action <string, string, float> successHandler = (_adUnitId, _label, _amount) => {
                Assert.That(_adUnitId, Is.EqualTo(adUnitId));
                Assert.That(_label, Is.EqualTo(label));
                Assert.That(_amount, Is.EqualTo(amount));
                Debug.Log(successMessage);
            };

            const string            failureMessage = "OnRewardedVideoFailedEvent triggered.";
            Action <string, string> failureHandler = (_adUnitId, _error) => {
                Assert.That(_adUnitId, Is.EqualTo(adUnitId));
                Debug.Log(failureMessage);
            };

            MoPubManager.OnRewardedVideoReceivedRewardEvent += successHandler;
            MoPubManager.OnRewardedVideoFailedEvent         += failureHandler;
            try {
                var mpm = new MoPubManager();
                mpm.EmitRewardedVideoReceivedRewardEvent(MoPubUtils.EncodeArgs(adUnitId, label, amount.ToString()));
                LogAssert.Expect(LogType.Log, shouldFail ? failureMessage : successMessage);
            } finally {
                MoPubManager.OnRewardedVideoReceivedRewardEvent -= successHandler;
                MoPubManager.OnRewardedVideoFailedEvent         -= failureHandler;
            }
        }
コード例 #2
0
    // Banner Listeners


    public void EmitAdLoadedEvent(string argsJson)
    {
        var   args     = MoPubUtils.DecodeArgs(argsJson, min: 3);
        var   adUnitId = args[0];
        var   width    = args[1];
        var   height   = args[2];
        float parsedHeight;
        var   parseSucceeded = float.TryParse(height, NumberStyles.Float, CultureInfo.InvariantCulture,
                                              out parsedHeight);

        MoPubLog.Log("EmitAdLoadedEvent", MoPubLog.AdLogEvent.LoadSuccess);
        MoPubLog.Log("EmitAdLoadedEvent", "Size received: {0}x{1}", width, height);
        MoPubLog.Log("EmitAdLoadedEvent", MoPubLog.AdLogEvent.ShowSuccess);
        if (!parseSucceeded)
        {
            EmitAdFailedEvent(MoPubUtils.EncodeArgs(adUnitId, "Failed to parse AdLoadedEvent due to invalid ad " +
                                                    "height: (" + height + ")"));
            return;
        }
        var evt = OnAdLoadedEvent;

        if (evt != null)
        {
            evt(adUnitId, parsedHeight);
        }
    }
コード例 #3
0
    private static void EmitImpressionTrackedEventHandler(string argsJson, bool background = false)
    {
        var args           = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId       = args[0];
        var impressionData = new MoPub.ImpressionData();

        if (args.Length > 1)
        {
            if (background || OnImpressionTrackedEventBg == null) // Only include data on *one* event.
            {
                impressionData = MoPub.ImpressionData.FromJson(args[1]);
            }
            else if (OnImpressionTrackedEvent != null)  // Only log if user is subscribed to *both* events.
            {
                Debug.Log("Suppressing impression data from `OnImpressionTrackedEvent` since it was already delivered" +
                          " to `OnImpressionTrackedEventBg`.");
            }
        }

        var evt = background ? OnImpressionTrackedEventBg : OnImpressionTrackedEvent;

        if (evt != null)
        {
            evt(adUnitId, impressionData);
        }
    }
コード例 #4
0
    public void EmitRewardedVideoReceivedRewardEvent(string argsJson)
    {
        var   args     = MoPubUtils.DecodeArgs(argsJson, min: 3);
        var   adUnitId = args[0];
        var   label    = args[1];
        var   amount   = args[2];
        float parsedAmount;
        var   parseSucceeded = float.TryParse(amount, NumberStyles.Float, CultureInfo.InvariantCulture,
                                              out parsedAmount);

        MoPubLog.Log("EmitRewardedVideoReceivedRewardEvent", MoPubLog.AdLogEvent.ShouldReward, label, amount);
        if (!parseSucceeded)
        {
            EmitRewardedVideoFailedEvent(MoPubUtils.EncodeArgs(adUnitId,
                                                               "Failed to parse RewardedVideoReceivedRewardEvent due to invalid rewarded amount: (" + amount + ")." +
                                                               " Please ensure the reward info is configured properly on your advertising dashboard."));
            return;
        }
        var evt = OnRewardedVideoReceivedRewardEvent;

        if (evt != null)
        {
            evt(adUnitId, label, parsedAmount);
        }
    }
コード例 #5
0
        private static void TestEmitAdLoadedEvent(string adUnitId, object width, object height, bool shouldFail = false)
        {
            const string           successMessage = "OnAdLoadedEvent triggered.";
            Action <string, float> successHandler = (_adUnitId, _height) => {
                Assert.That(_adUnitId, Is.EqualTo(adUnitId));
                Assert.That(_height, Is.EqualTo(height));
                Debug.Log(successMessage);
            };

            const string            failureMessage = "OnAdFailedEvent triggered.";
            Action <string, string> failureHandler = (_adUnitId, _error) => {
                Assert.That(_adUnitId, Is.EqualTo(adUnitId));
                Debug.Log(failureMessage);
            };

            MoPubManager.OnAdLoadedEvent += successHandler;
            MoPubManager.OnAdFailedEvent += failureHandler;
            try {
                var mpm = new MoPubManager();
                mpm.EmitAdLoadedEvent(MoPubUtils.EncodeArgs(adUnitId, width.ToString(), height.ToString()));
                LogAssert.Expect(LogType.Log, shouldFail ? failureMessage : successMessage);
            } finally {
                MoPubManager.OnAdLoadedEvent -= successHandler;
                MoPubManager.OnAdFailedEvent -= failureHandler;
            }
        }
コード例 #6
0
    public void EmitSdkInitializedEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId = args[0];
        var logLevel = MoPub.LogLevel.None;

        if (args.Length > 1)
        {
            try {
                logLevel = (MoPub.LogLevel)Enum.Parse(typeof(MoPub.LogLevel), args[1]);
            } catch (ArgumentException) {
                Debug.LogWarning("Invalid LogLevel received: " + args[1]);
            }
        }
        else
        {
            Debug.LogWarning("No LogLevel received");
        }

        MoPubLog.Log("EmitSdkInitializedEvent", MoPubLog.SdkLogEvent.InitFinished, logLevel);
        var evt = OnSdkInitializedEvent;

        if (evt != null)
        {
            evt(adUnitId);
        }
    }
コード例 #7
0
 public void CompareVersionsWithFirstSmaller()
 {
     Assert.That(MoPubUtils.CompareVersions("0", "1"), Is.EqualTo(-1));
     Assert.That(MoPubUtils.CompareVersions("0.9", "1.0"), Is.EqualTo(-1));
     Assert.That(MoPubUtils.CompareVersions("0.9.99", "1.0.0"), Is.EqualTo(-1));
     Assert.That(MoPubUtils.CompareVersions("0.9.99", "0.10.0"), Is.EqualTo(-1));
     Assert.That(MoPubUtils.CompareVersions("0.9.99", "0.9.100"), Is.EqualTo(-1));
 }
コード例 #8
0
        public void DecodeArgsWithValueShouldYieldListWithValue()
        {
            var res = MoPubUtils.DecodeArgs("[\"a\"]", 0);

            Assert.That(res, Is.Not.Null);
            Assert.That(res.Length, Is.EqualTo(1));
            Assert.That(res[0], Is.EqualTo("a"));
        }
コード例 #9
0
        public void DecodeArgsWithInvalidShouldErrorAndYieldEmptyList()
        {
            var res = MoPubUtils.DecodeArgs("{\"a\"]", 0);

            LogAssert.Expect(LogType.Error, "Invalid JSON data: {\"a\"]");
            Assert.That(res, Is.Not.Null);
            Assert.That(res.Length, Is.EqualTo(0));
        }
コード例 #10
0
    public void EmitNativeLoadEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 2);
        var adUnitId = args[0];
        var data     = AbstractNativeAd.Data.FromJson(args[1]);

        MoPubLog.Log("EmitNativeLoadEvent", MoPubLog.AdLogEvent.LoadSuccess);
        EmitNativeLoadEvent(adUnitId, data);
    }
コード例 #11
0
 public void CompareVersionsWithEmptyValues()
 {
     Assert.That(MoPubUtils.CompareVersions("", ""), Is.EqualTo(0));
     Assert.That(MoPubUtils.CompareVersions("", "1"), Is.EqualTo(-1));
     Assert.That(MoPubUtils.CompareVersions("1", ""), Is.EqualTo(1));
     Assert.That(MoPubUtils.CompareVersions(null, null), Is.EqualTo(0));
     Assert.That(MoPubUtils.CompareVersions(null, "1"), Is.EqualTo(-1));
     Assert.That(MoPubUtils.CompareVersions("1", null), Is.EqualTo(1));
 }
コード例 #12
0
        public void DecodeArgsWithExpectedValuesShouldYieldListWithDesiredValues()
        {
            var res = MoPubUtils.DecodeArgs("[\"a\", \"b\", \"c\"]", 3);

            Assert.That(res, Is.Not.Null);
            Assert.That(res.Length, Is.EqualTo(3));
            Assert.That(res[0], Is.EqualTo("a"));
            Assert.That(res[1], Is.EqualTo("b"));
            Assert.That(res[2], Is.EqualTo("c"));
        }
コード例 #13
0
        public void DecodeArgsWithoutMinimumValuesShouldErrorAndYieldListWithDesiredLength()
        {
            var res = MoPubUtils.DecodeArgs("[\"a\", \"b\"]", 3);

            LogAssert.Expect(LogType.Error, "Missing one or more values: [\"a\", \"b\"] (expected 3)");
            Assert.That(res, Is.Not.Null);
            Assert.That(res.Length, Is.EqualTo(3));
            Assert.That(res[0], Is.EqualTo("a"));
            Assert.That(res[1], Is.EqualTo("b"));
            Assert.That(res[2], Is.EqualTo(""));
        }
コード例 #14
0
    public void EmitRewardedVideoLeavingApplicationEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId = args[0];

        var evt = OnRewardedVideoLeavingApplicationEvent;

        if (evt != null)
        {
            evt(adUnitId);
        }
    }
コード例 #15
0
ファイル: MoPub.cs プロジェクト: uncosoft/mopub-unity-sdk
 /// <summary>
 /// Sends off an asynchronous network request to load the MoPub consent dialog. The two possible resulting events
 /// are <see cref="MoPubManager.OnConsentDialogLoadedEvent"/> and
 /// <see cref="MoPubManager.OnConsentDialogFailedEvent"/>.
 /// </summary>
 public static void LoadConsentDialog()
 {
     if (IsGdprApplicable ?? false)
     {
         MoPubLog.Log("LoadConsentDialog", MoPubLog.ConsentLogEvent.LoadAttempted);
         MoPubManager.MoPubPlatformApi.LoadConsentDialog();
     }
     else
     {
         MoPubManager.Instance.EmitConsentDialogFailedEvent(MoPubUtils.EncodeArgs("GDPR does not apply."));
     }
 }
コード例 #16
0
    public void EmitRewardedVideoClosedEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId = args[0];

        MoPubLog.Log("EmitRewardedVideoClosedEvent", MoPubLog.AdLogEvent.Dismissed);
        var evt = OnRewardedVideoClosedEvent;

        if (evt != null)
        {
            evt(adUnitId);
        }
    }
コード例 #17
0
    public void EmitRewardedVideoFailedToPlayEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 2);
        var adUnitId = args[0];
        var error    = args[1];

        var evt = OnRewardedVideoFailedToPlayEvent;

        if (evt != null)
        {
            evt(adUnitId, error);
        }
    }
コード例 #18
0
    public void EmitInterstitialClickedEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId = args[0];

        MoPubLog.Log("EmitInterstitialClickedEvent", MoPubLog.AdLogEvent.Tapped);
        var evt = OnInterstitialClickedEvent;

        if (evt != null)
        {
            evt(adUnitId);
        }
    }
コード例 #19
0
    public void EmitAdCollapsedEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId = args[0];

        MoPubLog.Log("EmitAdCollapsedEvent", MoPubLog.AdLogEvent.Collapsed);
        var evt = OnAdCollapsedEvent;

        if (evt != null)
        {
            evt(adUnitId);
        }
    }
コード例 #20
0
    public void EmitConsentDialogFailedEvent(string argsJson)
    {
        var args = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var err  = args[0];

        MoPubLog.Log("EmitConsentDialogFailedEvent", MoPubLog.ConsentLogEvent.LoadFailed, err);
        var evt = OnConsentDialogFailedEvent;

        if (evt != null)
        {
            evt(err);
        }
    }
コード例 #21
0
    public void EmitNativeFailEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 2);
        var adUnitId = args[0];
        var error    = args[1];

        MoPubLog.Log("EmitNativeFailEvent", MoPubLog.AdLogEvent.LoadFailed, adUnitId, error);
        var evt = OnNativeFailEvent;

        if (evt != null)
        {
            evt(adUnitId, error);
        }
    }
コード例 #22
0
    public void EmitRewardedVideoReceivedRewardEvent(string argsJson)
    {
        var args      = MoPubUtils.DecodeArgs(argsJson, min: 3);
        var adUnitId  = args[0];
        var label     = args[1];
        var amountStr = args[2];

        MoPubLog.Log("EmitRewardedVideoReceivedRewardEvent", MoPubLog.AdLogEvent.ShouldReward, label, amountStr);
        var evt = OnRewardedVideoReceivedRewardEvent;

        if (evt != null)
        {
            evt(adUnitId, label, Single.Parse(amountStr, CultureInfo.InvariantCulture));
        }
    }
コード例 #23
0
    public void EmitImpressionTrackedEvent(string argsJson)
    {
        var args           = MoPubUtils.DecodeArgs(argsJson, min: 1);
        var adUnitId       = args[0];
        var impressionData = args.Length > 1
            ? MoPub.ImpressionData.FromJson(args[1])
            : new MoPub.ImpressionData();

        var evt = OnImpressionTrackedEvent;

        if (evt != null)
        {
            evt(adUnitId, impressionData);
        }
    }
コード例 #24
0
    public void EmitConsentStatusChangedEvent(string argsJson)
    {
        var args                   = MoPubUtils.DecodeArgs(argsJson, min: 3);
        var oldConsent             = MoPub.Consent.FromString(args[0]);
        var newConsent             = MoPub.Consent.FromString(args[1]);
        var canCollectPersonalInfo = args[2].ToLower() == "true";

        MoPubLog.Log("EmitConsentStatusChangedEvent", MoPubLog.ConsentLogEvent.Updated, oldConsent, newConsent,
                     canCollectPersonalInfo ? "" : "not", "unknown");
        var evt = OnConsentStatusChangedEvent;

        if (evt != null)
        {
            evt(oldConsent, newConsent, canCollectPersonalInfo);
        }
    }
コード例 #25
0
    // Banner Listeners


    public void EmitAdLoadedEvent(string argsJson)
    {
        var args     = MoPubUtils.DecodeArgs(argsJson, min: 3);
        var adUnitId = args[0];
        var width    = args[1];
        var height   = args[2];

        MoPubLog.Log("EmitAdLoadedEvent", MoPubLog.AdLogEvent.LoadSuccess);
        MoPubLog.Log("EmitAdLoadedEvent", "Size received: {0}x{1}", width, height);
        MoPubLog.Log("EmitAdLoadedEvent", MoPubLog.AdLogEvent.ShowSuccess);
        var evt = OnAdLoadedEvent;

        if (evt != null)
        {
            evt(adUnitId, Single.Parse(height, CultureInfo.InvariantCulture));
        }
    }
コード例 #26
0
 private static string GetJsonEntry(string key, object value)
 {
     return(value != null ? "\"" + key + "\":\"" + MoPubUtils.InvariantCultureToString(value) + "\"," : "");
 }
コード例 #27
0
    private void SdkRow(SdkInfo info, Func <bool, bool> customButton = null)
    {
        var lat     = info.LatestVersion;
        var cur     = info.CurrentVersion;
        var isInst  = !string.IsNullOrEmpty(cur);
        var canInst = !string.IsNullOrEmpty(lat) && (!isInst || MoPubUtils.CompareVersions(cur, lat) < 0);
        // Is any async job in progress?
        var stillWorking = coroutine != null || downloader != null;

        string tooltip = string.Empty;

        if (isInst && (MoPubUtils.CompareVersions(cur, lat) != 0 || testing))
        {
            tooltip += "\n  Installed:  " + cur;
        }
        if (info.NetworkVersions != null)
        {
            string version;
            if (info.NetworkVersions.TryGetValue(PackageConfig.Platform.ANDROID, out version))
            {
                tooltip += "\n  Android SDK:  " + version;
            }
            if (info.NetworkVersions.TryGetValue(PackageConfig.Platform.IOS, out version))
            {
                tooltip += "\n  iOS SDK:  " + version;
            }
        }
        if (!string.IsNullOrEmpty(tooltip))
        {
            tooltip = info.Name + "\n  Package:  " + (lat ?? "n/a") + tooltip;
        }

        GUILayout.Space(4);
        using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false))) {
            GUILayout.Space(10);
            EditorGUILayout.LabelField(new GUIContent {
                text = info.Name, tooltip = tooltip
            });
            GUILayout.Button(new GUIContent {
                text    = lat ?? "--",
                tooltip = tooltip
            }, canInst ? EditorStyles.boldLabel : EditorStyles.label);
            GUILayout.Space(3);
            if (customButton == null || !customButton(canInst))
            {
                GUI.enabled = !stillWorking && (canInst || testing);
                if (GUILayout.Button(new GUIContent {
                    text = isInst ? "Upgrade" : "Install",
                    tooltip = tooltip
                }, fieldWidth))
                {
                    this.StartCoroutine(DownloadSDK(info));
                }
                GUI.enabled = true;
            }

            if (!string.IsNullOrEmpty(info.Instructions) && (info.Instructions != helpLink || testing))
            {
                if (GUILayout.Button("?", GUILayout.ExpandWidth(false)))
                {
                    Application.OpenURL(info.Instructions);
                }
            }
            else
            {
                // Need to fill space so that the Install/Upgrade buttons all line up nicely.
                GUILayout.Button(" ", EditorStyles.label, GUILayout.Width(17));
            }
            GUILayout.Space(5);
        }
        GUILayout.Space(4);
    }
コード例 #28
0
ファイル: MoPub.cs プロジェクト: uncosoft/mopub-unity-sdk
        public static ImpressionData FromJson(string json)
        {
            var impData = new ImpressionData();

            if (string.IsNullOrEmpty(json))
            {
                return(impData);
            }

            var fields = MJ.Json.Deserialize(json) as Dictionary <string, object>;

            if (fields == null)
            {
                return(impData);
            }

            object obj;
            double parsedDouble;
            int    parsedInt;

            if (fields.TryGetValue("app_version", out obj) && obj != null)
            {
                impData.AppVersion = obj.ToString();
            }

            if (fields.TryGetValue("adunit_id", out obj) && obj != null)
            {
                impData.AdUnitId = obj.ToString();
            }

            if (fields.TryGetValue("adunit_name", out obj) && obj != null)
            {
                impData.AdUnitName = obj.ToString();
            }

            if (fields.TryGetValue("adunit_format", out obj) && obj != null)
            {
                impData.AdUnitFormat = obj.ToString();
            }

            if (fields.TryGetValue("id", out obj) && obj != null)
            {
                impData.ImpressionId = obj.ToString();
            }

            if (fields.TryGetValue("currency", out obj) && obj != null)
            {
                impData.Currency = obj.ToString();
            }

            if (fields.TryGetValue("publisher_revenue", out obj) && obj != null &&
                double.TryParse(MoPubUtils.InvariantCultureToString(obj), NumberStyles.Any,
                                CultureInfo.InvariantCulture, out parsedDouble))
            {
                impData.PublisherRevenue = parsedDouble;
            }

            if (fields.TryGetValue("adgroup_id", out obj) && obj != null)
            {
                impData.AdGroupId = obj.ToString();
            }

            if (fields.TryGetValue("adgroup_name", out obj) && obj != null)
            {
                impData.AdGroupName = obj.ToString();
            }

            if (fields.TryGetValue("adgroup_type", out obj) && obj != null)
            {
                impData.AdGroupType = obj.ToString();
            }

            if (fields.TryGetValue("adgroup_priority", out obj) && obj != null &&
                int.TryParse(MoPubUtils.InvariantCultureToString(obj), NumberStyles.Any,
                             CultureInfo.InvariantCulture, out parsedInt))
            {
                impData.AdGroupPriority = parsedInt;
            }

            if (fields.TryGetValue("country", out obj) && obj != null)
            {
                impData.Country = obj.ToString();
            }

            if (fields.TryGetValue("precision", out obj) && obj != null)
            {
                impData.Precision = obj.ToString();
            }

            if (fields.TryGetValue("network_name", out obj) && obj != null)
            {
                impData.NetworkName = obj.ToString();
            }

            if (fields.TryGetValue("network_placement_id", out obj) && obj != null)
            {
                impData.NetworkPlacementId = obj.ToString();
            }

            impData.JsonRepresentation = json;

            return(impData);
        }
コード例 #29
0
 public void CompareVersionsWithEqual()
 {
     Assert.That(MoPubUtils.CompareVersions("1", "1"), Is.EqualTo(0));
     Assert.That(MoPubUtils.CompareVersions("1.0", "1.0"), Is.EqualTo(0));
     Assert.That(MoPubUtils.CompareVersions("1.0.0", "1.0.0"), Is.EqualTo(0));
 }