/// <summary> /// /// </summary> /// <param name="adId"></param> /// <param name="onRewardEarned"></param> /// <param name="loadOneMoreOnOpening">загрузить ещё один такой же блок рекламы при открытии этого (чтобы после закрытия УЖЕ был готов к показу)</param> /// <param name="reloadAfterClosing">загрузить такой же блок рекламы после закрытия этого</param> /// <param name="tryReshowingOnShowingFailed"></param> /// <returns>показалась ли рекламка</returns> public static bool ShowRewardedAd(RewardedAdId adId, Action <Reward> onRewardEarned = null, bool loadOneMoreOnOpening = false, bool reloadAfterClosing = false, int tryReshowingOnShowingFailed = 0) { //это для тестирования //if (debug) // adId = RewardedAdId.ID__TEST; var thisIdAds = rewardedAds.Where(a => a.adId == adId); var loadedAd = thisIdAds.Where(r => r.ad.IsLoaded()).FirstOrDefault(); if (!thisIdAds.Any()) { Toast.Instance.Show(LocalizedStrings.reward_ad_not_loaded); return(false); } if (loadedAd == null) { Toast.Instance.Show(LocalizedStrings.reward_ad_not_loaded_yet); return(false); } loadedAd.onRewardEarned = onRewardEarned; loadedAd.loadOneMoreOnOpening = loadOneMoreOnOpening; loadedAd.reloadAfterClosing = reloadAfterClosing; loadedAd.tryReshowingOnShowingFailed = tryReshowingOnShowingFailed; loadedAd.ad.Show(); return(true); }
private void ClearCachedAds(RewardedAdId id) { if (revarderAds.ContainsKey(id)) { revarderAds[id].Clear(); } }
private void ClearCachedAd(RewardedAdId id, RewardedAd ad) { if (revarderAds.ContainsKey(id)) { revarderAds[id].Remove(ad); } }
public void ShowRewardedAd(RewardedAdId id, Action onEarnedreward, Action onOpened, Action onClosed, Action onFailedToShow) { var ad = GetCachedAd(id); if (ad == null) { onFailedToShow?.Invoke(); return; } ad.OnUserEarnedReward += (sender, args) => { onEarnedreward?.Invoke(); }; ad.OnAdOpening += (sender, args) => { onOpened?.Invoke(); }; ad.OnAdClosed += (sender, args) => { ClearCachedAd(id, ad); onClosed?.Invoke(); }; ad.OnAdFailedToShow += (sender, args) => { ClearCachedAd(id, ad); onFailedToShow?.Invoke(); }; ad.Show(); }
private RewardedAd GetCachedAd(RewardedAdId id) { RewardedAd ad = null; if (revarderAds.ContainsKey(id)) { ad = revarderAds[id].Where(_ad => _ad.IsLoaded()).FirstOrDefault(); } return(ad); }
public RewardedAdId GetActualId(RewardedAdId id) { if (debugMode) { return(RewardedAdId.Test); } else { return(id); } }
private void CacheAd(RewardedAdId id, RewardedAd ad) { if (!revarderAds.ContainsKey(id)) { revarderAds.Add(id, new List <RewardedAd>() { ad }); } else { revarderAds[id].Add(ad); } }
/// <summary> /// /// </summary> /// <param name="adId"></param> /// <param name="onRewardEarned"></param> /// <returns>false если что то пошло не так. true если началась загрузка</returns> public static bool LoadRewardedAd(RewardedAdId adId, int tryReloadOnLoadingFailed = 0) { //Debug.Log($"advertising dubig is {debug}"); ////это для тестирования //if (debug) // adId = RewardedAdId.ID__TEST; var adCount = rewardedAds.Count(a => a.adId == adId); Debug.Log($"count of olready loaded advertising {adId} is: {adCount}. and max is: {GADWrapper.maximumSameRevardedAds}"); if (adCount >= GADWrapper.maximumSameRevardedAds) { return(false); } var ad = new RewardedAd(Const.GetId(adId)); rewardedAds.Add ( new RewardedAdWrap() { adId = adId, ad = ad, tryReloadOnLoadingFailed = tryReloadOnLoadingFailed } ); ad.OnAdClosed += Ad_OnAdClosed; ad.OnAdFailedToLoad += Ad_OnAdFailedToLoad; ad.OnAdFailedToShow += Ad_OnAdFailedToShow; ad.OnAdLoaded += Ad_OnAdLoaded; ad.OnAdOpening += Ad_OnAdOpening; ad.OnUserEarnedReward += Ad_OnUserEarnedReward; //Use AdRequest.Builder.addTestDevice("B36E541FF471B2ADC7410D9DEAC3A651") to get test ads on this device. ad.LoadAd(new AdRequest .Builder() .AddTestDevice("B36E541FF471B2ADC7410D9DEAC3A651") .Build() ); return(true); }
public void LoadRevardedAd(RewardedAdId id, Action <bool> onLoaded) { var ad = new RewardedAd(ToStringId(GetActualId(id))); var request = new AdRequest.Builder() .Build(); ad.OnAdLoaded += (sender, args) => { CacheAd(id, ad); onLoaded?.Invoke(true); }; ad.OnAdFailedToLoad += (sender, args) => { ClearCachedAd(id, ad); onLoaded?.Invoke(false); }; ad.LoadAd(request); }
public string ToStringId(RewardedAdId id) { var field = id .GetType() .GetMember(id.ToString()) .Where(m => m != null) .FirstOrDefault(); if (field != null) { var value = field.GetCustomAttributes(typeof(StringValueAttribute), false) .Select(a => a as StringValueAttribute) .Where(a => a != null) .Select(a => a.Value) .FirstOrDefault(); if (value != null) { return(value); } } throw new Exception($"no string value for this {nameof(id)}"); }
public static string GetId(RewardedAdId revardedId) { return(revardedAdIds[(int)revardedId]); }
public bool HasCachedAd(RewardedAdId id) { return(revarderAds.ContainsKey(id) && revarderAds[id].Any()); }