コード例 #1
0
    IEnumerator CoReward(BoolDelegate onFinish, AdPlacementType placementType)
    {
        RewardResult           rewardResult = new RewardResult(); string errorMsg = string.Empty;
        WaitForSecondsRealtime checkInterval = new WaitForSecondsRealtime(0.3f);

        List <CustomMediation.AD_NETWORK> adPriority = GetAdsNetworkPriority(placementType);

        for (int i = 0; i < adPriority.Count; i++)
        {
            bool checkAdNetworkDone     = false;
            IAdsNetworkHelper adsHelper = GetAdsNetworkHelper(adPriority[i]);
            if (adsHelper == null)
            {
                continue;
            }
            adsHelper.Reward(placementType, (result) =>
            {
                checkAdNetworkDone = true; rewardResult = result;
            });
            while (!checkAdNetworkDone)
            {
                yield return(checkInterval);
            }
            if (rewardResult.type == RewardResult.Type.Finished)
            {
                currentAdsHelper = adsHelper;
                break;
            }
            if (rewardResult.type == RewardResult.Type.Canceled)
            {
                break;
            }                                                               //if a reward ads was shown and user skipped it, stop looking for more ads
        }

        /*for (int i = 0; i < adsNetworkHelpers.Count; i++)
         * {
         *  bool checkAdNetworkDone = false;
         *  adsNetworkHelpers[i].Reward(placementType, (result) =>
         *  {
         *      checkAdNetworkDone = true; rewardResult = result;
         *  });
         *  while (!checkAdNetworkDone)
         *  {
         *      yield return checkInterval;
         *  }
         *  if (rewardResult.type == RewardResult.Type.Finished)
         *  {
         *      currentAdsHelper = adsNetworkHelpers[i];
         *      break;
         *  }
         *  if (rewardResult.type == RewardResult.Type.Canceled) { break; } //if a reward ads was shown and user skipped it, stop looking for more ads
         * }*/
        onFinish(rewardResult.type == RewardResult.Type.Finished);
        Manager.LoadingAnimation(false);
        if (rewardResult.type == RewardResult.Type.LoadFailed)
        {
            ShowError(rewardResult.message, placementType);
        }
    }
コード例 #2
0
        internal override RewardResult CalculateReward(Formula formulaToCheck)
        {
            var isFormulaReturningRewardResultVisitor = new IsFormulaReturningRewardResultVisitor();

            isFormulaReturningRewardResultVisitor.Visit(formulaToCheck);
            if (!isFormulaReturningRewardResultVisitor.IsReturningRewardResult)
            {
                throw new Exception("expected formula which returns reward");
            }

            using (var fileResults = WriteFilesAndExecuteMrmc(formulaToCheck, true))
            {
                var resultEnumerator = File.ReadLines(fileResults.FilePath).GetEnumerator();

                var rewardResultValue = 0.0;
                while (resultEnumerator.MoveNext())
                {
                    var result = resultEnumerator.Current;
                    if (!String.IsNullOrEmpty(result))
                    {
                        var parsed = MrmcRewardParser.Match(result);
                        if (parsed.Success)
                        {
                            var    state = Int32.Parse(parsed.Groups["state"].Value);
                            var    probabilityOfState = _initialStates[state];
                            double rewardOfState;
                            if (parsed.Groups["reward"].Value == "inf")
                            {
                                rewardOfState = double.PositiveInfinity;
                            }
                            else
                            {
                                rewardOfState = Double.Parse(parsed.Groups["reward"].Value, CultureInfo.InvariantCulture);
                            }
                            rewardResultValue += probabilityOfState * rewardOfState;                             //TODO: Calculate reward _in_ initial state?
                        }
                        else
                        {
                            throw new Exception("Expected different output of MRMC");
                        }
                    }
                }
                var rewardResult = new RewardResult();
                rewardResult.Value = rewardResultValue;
                return(rewardResult);
            }
        }
コード例 #3
0
    IEnumerator CoRequestInterstitialRewardedNoShow(AdPlacement.Type placementType, RewardDelegate onAdLoaded = null, bool showLoading = true)
    {
        RewardResult           rewardResult  = new RewardResult();
        string                 errorMsg      = string.Empty;
        WaitForSecondsRealtime checkInterval = new WaitForSecondsRealtime(0.05f);

        var adPriority = GetAdsNetworkPriority(placementType);

        for (int i = 0; i < adPriority.Count; i++)
        {
            bool checkAdNetworkDone     = false;
            IAdsNetworkHelper adsHelper = GetAdsNetworkHelper(adPriority[i]);
            if (adsHelper == null)
            {
                continue;
            }
            adsHelper.RequestInterstitialRewardedNoShow(placementType,
                                                        (success) => { checkAdNetworkDone = true; rewardResult = success; });

            while (!checkAdNetworkDone) //Wait for ads load to complete
            {
                yield return(checkInterval);
            }

            if (rewardResult.type == RewardResult.Type.Finished)
            {
                currentRewardInterAdsHelper = adsHelper;
                break;
            }
            if (rewardResult.type == RewardResult.Type.Canceled)
            {
                break;
            }                                                               //if a reward ads was shown and user skipped it, stop looking for more ads
        }
        if (showLoading)
        {
            Manager.LoadingAnimation(false);
        }
        onAdLoaded?.Invoke(rewardResult);
    }
コード例 #4
0
    public void ShowRewardBasedVideo(RewardDelegate onVideoCompleted = null, string rewardVideoAdId = AdMobConst.REWARD_ID)
    {
        if (onVideoCompleted != null)
        {
            this.adsVideoRewardedCallback = onVideoCompleted;
        }

        //this.reward = false;
        rewardResult = new RewardResult(RewardResult.Type.Canceled);

        if (this.rewardBasedVideo.IsLoaded())
        {
            this.showingAds = true;
            this.rewardBasedVideo.Show();
            return;
        }
        Manager.LoadingAnimation(true);

        this.rewardBasedVideo.OnAdLoaded       += RewardBasedVideo_OnAdLoaded;
        this.rewardBasedVideo.OnAdFailedToLoad += RewardBasedVideo_OnAdFailedToLoad;
        RequestRewardBasedVideo(rewardVideoAdId);
        StartCoroutine(CoTimeoutLoadReward());
    }