Hello everyone, I am facing a problem which annoys me since 2 weeks.
I am trying to implement Rewarded Video code to my mobile game created in Unity.
Everything works fine except if one time there exists something wrong with ads showing process, all the other times I want to show rewarded videos I am facing a problem.
I am requesting and loading videos in start function and every scene in my game has the script attached to a Game Object, so I am calling a new request and load at the beginning of every scene.
I would be so happy if anyone can suggest anything, thanks .
public class Rewardedvideo : MonoBehaviour
{
string Video_Ad_ID = "ca-app-pub-3940256099942544/5224354917";
private RewardedAd rewardedAd;
public bool ready = false;
void Start()
{
RequestRewardAd();
}
public void RequestRewardAd()
{
this.rewardedAd = new RewardedAd(Video_Ad_ID);
AdRequest request = new AdRequest.Builder().Build();
Debug.Log("request video");
this.rewardedAd.LoadAd(request);
Debug.Log("Loaded video");
this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
this.rewardedAd.OnAdClosed += HandleOnRewardedAdClosed;
}
public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
{
OnDestroy();
RequestRewardAd();
}
public void HandleOnRewardedAdClosed(object sender, EventArgs args)
{//ad closed (even if not finished watching)
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
RequestRewardAd();
}
public void HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args)
{
ready = false;
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
RequestRewardAd();
}
public void HandleUserEarnedReward(object sender, Reward args)
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
public void showRewardedAd()
{
if (ready)
{
this.rewardedAd.Show();
Debug.Log("Showed or not ?");
}
else
{
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
RequestRewardAd();
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
public void OnDestroy()
{
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
}
public void HandleRewardedAdLoaded(object sender, EventArgs args)
{
ready = true;
}
}
↧