リワード インタースティシャル広告

リワード インタースティシャルは、アプリの画面が変わる自然なタイミングで自動的に表示される広告に対して報酬を提供できる、インセンティブ広告フォーマットの一種です。リワード広告とは異なり、ユーザーはリワード インタースティシャルを表示するためにオプトインする必要はありません。

前提条件

  • Unity プラグイン 5.4.0 以降

実装

リワード インタースティシャル広告を組み込む主な手順は、以下のとおりです。

  1. 広告を読み込む
  2. 広告を表示してリワード イベントを処理する
  3. 広告イベント コールバックを使用する

広告を読み込む

広告の読み込みは、RewardedInterstitialAd クラスで静的 LoadAd() メソッドを使用して行います。読み込みメソッドには、広告ユニット ID と AdRequest オブジェクトのほか、広告の読み込みの成功時または失敗時に呼び出される完了ハンドラが必要です。読み込まれた RewardedInterstitialAd オブジェクトは、完了ハンドラのパラメータとして提供されます。以下の例は、RewardedInterstitialAd を読み込む方法を示しています。

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedInterstitialAd rewardedInterstitialAd;
    ...

    public void Start()
    {
        ...

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        RewardedInterstitialAd.LoadAd(adUnitId, request, adLoadCallback);
    }

    private void adLoadCallback(RewardedInterstitialAd ad, string error)
    {
        if (error == null)
        {
            rewardedInterstitialAd = ad;
        }
    }
}

広告を表示してリワード イベントを処理する

広告を表示する際には、ユーザーへの報酬を処理するコールバックを指定する必要があります。

以下のコードは、リワード インタースティシャル広告を表示するための最適な方法を示しています。

public void ShowRewardedInterstitialAd()
{
    if (rewardedInterstitialAd != null)
    {
        rewardedInterstitialAd.Show(userEarnedRewardCallback);
    }
}

private void userEarnedRewardCallback(Reward reward)
{
    // TODO: Reward the user.
}

広告イベント コールバックを使用する

広告の動作をより細かくカスタマイズするには、さまざまなイベントを利用します。また、適切なイベント ハンドラにデリゲートを登録して、これらのイベントをリッスンします。

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedInterstitialAd rewardedInterstitialAd;
    ...

    public void Start()
    {
        ...

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        RewardedInterstitialAd.LoadAd(adUnitId, request, adLoadCallback);
    }

    private void adLoadCallback(RewardedInterstitialAd ad, string error)
    {
        if (error == null)
        {
            rewardedInterstitialAd = ad;

            rewardedInterstitialAd.OnAdFailedToPresentFullScreenContent += HandleAdFailedToPresent;
            rewardedInterstitialAd.OnAdDidPresentFullScreenContent += HandleAdDidPresent;
            rewardedInterstitialAd.OnAdDidDismissFullScreenContent += HandleAdDidDismiss;
            rewardedInterstitialAd.OnPaidEvent += HandlePaidEvent;
        }
    }

    private void HandleAdFailedToPresent(object sender, AdErrorEventArgs args)
    {
        MonoBehavior.print("Rewarded interstitial ad has failed to present.");
    }

    private void HandleAdDidPresent(object sender, EventArgs args)
    {
        MonoBehavior.print("Rewarded interstitial ad has presented.");
    }

    private void HandleAdDidDismiss(object sender, EventArgs args)
    {
        MonoBehavior.print("Rewarded interstitial ad has dismissed presentation.");
    }

    private void HandlePaidEvent(object sender, AdValueEventArgs args)
    {
        MonoBehaviour.print(
            "Rewarded interstitial ad has received a paid event.");
    }
}