PlaneRun/Assets/Scripts/RewardedAdController.cs

164 lines
5.3 KiB
C#

using System;
using UnityEngine;
using GoogleMobileAds.Api;
namespace GoogleMobileAds.Sample
{
/// <summary>
/// Demonstrates how to use Google Mobile Ads rewarded ads.
/// </summary>
public class RewardedAdController : MonoBehaviour
{
/// <summary>
/// UI element activated when an ad is ready to show.
/// </summary>
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
private const string _adUnitId = "ca-app-pub-2626773788355001/2015295060";
#elif UNITY_IPHONE
private const string _adUnitId = "ca-app-pub-3940256099942544/1712485313";
#else
private const string _adUnitId = "unused";
#endif
private RewardedAd _rewardedAd;
[SerializeField] private shopManager shopManager;
/// <summary>
/// Loads the ad.
/// </summary>
public void LoadAd()
{
// Clean up the old ad before loading a new one.
if (_rewardedAd != null)
{
DestroyAd();
}
Debug.Log("Loading rewarded ad.");
// Create our request used to load the ad.
var adRequest = new AdRequest();
// Send the request to load the ad.
RewardedAd.Load(_adUnitId, adRequest, (RewardedAd ad, LoadAdError error) =>
{
// If the operation failed with a reason.
if (error != null)
{
Debug.LogError("Rewarded ad failed to load an ad with error : " + error);
shopManager.EnableRewardedAdButton(false);
return;
}
// If the operation failed for unknown reasons.
// This is an unexpected error, please report this bug if it happens.
if (ad == null)
{
Debug.LogError("Unexpected error: Rewarded load event fired with null ad and null error.");
shopManager.EnableRewardedAdButton(false);
return;
}
// The operation completed successfully.
Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo());
shopManager.EnableRewardedAdButton(true);
_rewardedAd = ad;
// Register to ad events to extend functionality.
RegisterEventHandlers(ad);
});
}
/// <summary>
/// Shows the ad.
/// </summary>
public void ShowAd()
{
if (_rewardedAd != null && _rewardedAd.CanShowAd())
{
Debug.Log("Showing rewarded ad.");
_rewardedAd.Show((Reward reward) =>
{
Debug.Log(String.Format("Rewarded ad granted a reward: {0} {1}",
reward.Amount,
reward.Type));
shopManager.RewardUser();
});
}
else
{
shopManager.EnableRewardedAdButton(false);
Debug.LogError("Rewarded ad is not ready yet.");
}
}
/// <summary>
/// Destroys the ad.
/// </summary>
public void DestroyAd()
{
if (_rewardedAd != null)
{
Debug.Log("Destroying rewarded ad.");
_rewardedAd.Destroy();
_rewardedAd = null;
}
}
/// <summary>
/// Logs the ResponseInfo.
/// </summary>
public void LogResponseInfo()
{
if (_rewardedAd != null)
{
var responseInfo = _rewardedAd.GetResponseInfo();
UnityEngine.Debug.Log(responseInfo);
}
}
private void RegisterEventHandlers(RewardedAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Rewarded ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Rewarded ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Rewarded ad was clicked.");
};
// Raised when the ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Rewarded ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Rewarded ad full screen content closed.");
LoadAd();
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Rewarded ad failed to open full screen content with error : "
+ error);
};
}
}
}