PlaneRun/Assets/Scripts/InterstitialAdController.cs

147 lines
4.8 KiB
C#

using System;
using UnityEngine;
using GoogleMobileAds.Api;
namespace GoogleMobileAds.Sample
{
/// <summary>
/// Demonstrates how to use Google Mobile Ads interstitial ads.
/// </summary>
public class InterstitialAdController : 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/6080131766";
#elif UNITY_IPHONE
private const string _adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
private const string _adUnitId = "unused";
#endif
private InterstitialAd _interstitialAd;
/// <summary>
/// Loads the ad.
/// </summary>
public void LoadAd()
{
// Clean up the old ad before loading a new one.
if (_interstitialAd != null)
{
DestroyAd();
}
Debug.Log("Loading interstitial ad.");
// Create our request used to load the ad.
var adRequest = new AdRequest();
// Send the request to load the ad.
InterstitialAd.Load(_adUnitId, adRequest, (InterstitialAd ad, LoadAdError error) =>
{
// If the operation failed with a reason.
if (error != null)
{
Debug.LogError("Interstitial ad failed to load an ad with error : " + error);
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: Interstitial load event fired with null ad and null error.");
return;
}
// The operation completed successfully.
Debug.Log("Interstitial ad loaded with response : " + ad.GetResponseInfo());
_interstitialAd = ad;
// Register to ad events to extend functionality.
RegisterEventHandlers(ad);
});
}
/// <summary>
/// Shows the ad.
/// </summary>
public void ShowAd()
{
if (_interstitialAd != null && _interstitialAd.CanShowAd())
{
Debug.Log("Showing interstitial ad.");
_interstitialAd.Show();
}
else
{
Debug.LogError("Interstitial ad is not ready yet.");
}
}
/// <summary>
/// Destroys the ad.
/// </summary>
public void DestroyAd()
{
if (_interstitialAd != null)
{
Debug.Log("Destroying interstitial ad.");
_interstitialAd.Destroy();
_interstitialAd = null;
}
}
/// <summary>
/// Logs the ResponseInfo.
/// </summary>
public void LogResponseInfo()
{
if (_interstitialAd != null)
{
var responseInfo = _interstitialAd.GetResponseInfo();
UnityEngine.Debug.Log(responseInfo);
}
}
private void RegisterEventHandlers(InterstitialAd ad)
{
// Raised when the ad is estimated to have earned money.
ad.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
ad.OnAdImpressionRecorded += () =>
{
Debug.Log("Interstitial ad recorded an impression.");
};
// Raised when a click is recorded for an ad.
ad.OnAdClicked += () =>
{
Debug.Log("Interstitial ad was clicked.");
};
// Raised when an ad opened full screen content.
ad.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Interstitial ad full screen content opened.");
};
// Raised when the ad closed full screen content.
ad.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Interstitial ad full screen content closed.");
};
// Raised when the ad failed to open full screen content.
ad.OnAdFullScreenContentFailed += (AdError error) =>
{
Debug.LogError("Interstitial ad failed to open full screen content with error : "
+ error);
};
}
}
}