97 lines
3.4 KiB
C#
97 lines
3.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System;
|
|
using UnityEngine;
|
|
|
|
public partial class AdManager
|
|
{
|
|
int retryAttemptReward;
|
|
|
|
private Action<int> _rewardCallback;
|
|
private bool _rewardOK = false;
|
|
|
|
public void InitializeRewardedAds()
|
|
{
|
|
// Attach callback
|
|
MaxSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardedAdLoadedEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardedAdLoadFailedEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdDisplayedEvent += OnRewardedAdDisplayedEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedAdRevenuePaidEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdHiddenEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardedAdFailedToDisplayEvent;
|
|
MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent;
|
|
|
|
// Load the first rewarded ad
|
|
LoadRewardedAd();
|
|
}
|
|
|
|
private void LoadRewardedAd()
|
|
{
|
|
MaxSdk.LoadRewardedAd(adRewardUnitId);
|
|
}
|
|
|
|
private void OnRewardedAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
|
|
{
|
|
// Rewarded ad is ready for you to show. MaxSdk.IsRewardedAdReady(adUnitId) now returns 'true'.
|
|
|
|
// Reset retry attempt
|
|
retryAttemptInterstitial = 0;
|
|
}
|
|
|
|
private void OnRewardedAdLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo)
|
|
{
|
|
// Rewarded ad failed to load
|
|
// AppLovin recommends that you retry with exponentially higher delays, up to a maximum delay (in this case 64 seconds).
|
|
|
|
retryAttemptInterstitial++;
|
|
double retryDelay = Math.Pow(2, Math.Min(6, retryAttemptInterstitial));
|
|
|
|
Invoke("LoadRewardedAd", (float)retryDelay);
|
|
}
|
|
|
|
private void OnRewardedAdDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { }
|
|
|
|
private void OnRewardedAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo)
|
|
{
|
|
// Rewarded ad failed to display. AppLovin recommends that you load the next ad.
|
|
LoadRewardedAd();
|
|
|
|
Debug.Log(Tag + "==================== OnRewardedAdFailedToDisplayEvent");
|
|
_rewardCallback?.Invoke(1);
|
|
}
|
|
|
|
private void OnRewardedAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) { }
|
|
|
|
private void OnRewardedAdHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
|
|
{
|
|
// Rewarded ad is hidden. Pre-load the next ad
|
|
LoadRewardedAd();
|
|
if (_rewardOK)
|
|
{
|
|
_rewardCallback?.Invoke(0);
|
|
}
|
|
else{
|
|
_rewardCallback?.Invoke(1);
|
|
}
|
|
_rewardOK = false;
|
|
_rewardCallback = null;
|
|
Debug.Log(Tag + "==================== OnRewardedAdHiddenEvent");
|
|
}
|
|
|
|
private void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward, MaxSdkBase.AdInfo adInfo)
|
|
{
|
|
// The rewarded ad displayed and the user should receive the reward.
|
|
|
|
Debug.Log(Tag + "Rewarded user: " + reward.Amount + " " + reward.Label);
|
|
_rewardOK = true;
|
|
// _rewardCallback?.Invoke(0);
|
|
// _rewardCallback = null;
|
|
}
|
|
|
|
private void OnRewardedAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo)
|
|
{
|
|
// Ad revenue paid. Use this callback to track user revenue.
|
|
}
|
|
}
|