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

インタースティシャル広告は、ホストアプリのインターフェースを覆うようにフルスクリーンで表示される広告です。通常は、ゲームのレベルが変わる際のポーズ画面など、アプリの画面が切り替わる自然なタイミングで表示されます。アプリにインタースティシャル広告が表示されると、ユーザーは広告をタップしてリンク先 URL に移動するか、広告を閉じてアプリに戻るかを選択することになります。

このガイドでは、インタースティシャル広告を Unity アプリに統合する方法について説明します。

前提条件

スタートガイドの手順を完了し、Unity アプリに Google Mobile Ads Unity プラグインがインポート済みになっていること

インタースティシャル広告を作成する

インタースティシャルを表示するための最初のステップは、GameObject に追加されたスクリプトに InterstitialAd オブジェクトを作成することです。

using GoogleMobileAds.Api;
…

private InterstitialAd interstitial;

private void RequestInterstitial()
{
    #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
    #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
    #else
        string adUnitId = "unexpected_platform";
    #endif

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
}

InterstitialAd のコンストラクタには、次のパラメータがあります。

  • adUnitId - InterstitialAd が広告を読み込む AdMob 広告ユニットの ID です。

プラットフォームに応じて、異なる広告ユニットを使用します。iOS で広告リクエストを実行する場合は iOS 広告ユニットを使用し、Android で広告リクエストを実行する場合は Android 広告ユニットを使用する必要があります。

テストでは常にテスト広告を使用する

上のサンプルコードに含まれる広告ユニット ID を使って自由に広告をリクエストできます。これは個々のリクエストに対して実際の広告ではなくテスト広告を返すよう特別に設定されており、安全に使用できます。

ただし、AdMob 管理画面にアプリを登録し、アプリで使用する独自の広告ユニット ID を作成したら、開発中はデバイスをテストデバイスとして明示的に設定する必要があります。これは非常に重要です。実際の広告でのテストは、広告をタップしなくても AdMob ポリシー違反とみなされるため、アカウント停止の原因となる可能性があります。開発時に常にテスト広告を取得する方法については、テスト広告をご覧ください。

広告を読み込む

InterstitialAd がインスタンス化されると、次のステップは広告を読み込むことです。これは、InterstitialAd クラスの loadAd() メソッドで行います。それには、AdRequest 引数を使用して、1 つの広告リクエストに関するランタイムの情報(ターゲティング情報など)を保持する必要があります。

広告を読み込む方法の例を次に示します。

using GoogleMobileAds.Api;
…
private InterstitialAd interstitial;

private void RequestInterstitial()
{
    #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
    #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
    #else
        string adUnitId = "unexpected_platform";
    #endif

    // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);
    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.LoadAd(request);
}

広告を表示する

インタースティシャル広告は、アプリの流れが一時的に中断する自然なタイミングで表示される必要があります。ゲームのレベルが切り替わる合間やタスクが完了した直後などが良い例です。インタースティシャルを表示するには、isLoaded() メソッドを使用して読み込みが完了したことを確認してから、show() を呼び出します。

前回のコードサンプルのインタースティシャル広告は、ゲームの最後に表示される可能性があります(下の例を参照)。

private void GameOver()
{
  if (this.interstitial.IsLoaded()) {
    this.interstitial.Show();
  }
}

広告イベント

広告の動作をより細かくカスタマイズするには、広告のライフサイクルで生じるさまざまなイベント(読み込み、開始、終了など)を考慮します。以下に示すように、適切な EventHandler にデリゲートを登録して、これらのイベントをリッスンします。

using GoogleMobileAds.Api;
…
private InterstitialAd interstitial;

private void RequestInterstitial()
{
    #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";
    #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
    #else
        string adUnitId = "unexpected_platform";
    #endif

     // Initialize an InterstitialAd.
    this.interstitial = new InterstitialAd(adUnitId);

    // Called when an ad request has successfully loaded.
    this.interstitial.OnAdLoaded += HandleOnAdLoaded;
    // Called when an ad request failed to load.
    this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
    // Called when an ad is shown.
    this.interstitial.OnAdOpening += HandleOnAdOpened;
    // Called when the ad is closed.
    this.interstitial.OnAdClosed += HandleOnAdClosed;
    // Called when the ad click caused the user to leave the application.
    this.interstitial.OnAdLeavingApplication += HandleOnAdLeavingApplication;

    // Create an empty ad request.
    AdRequest request = new AdRequest.Builder().Build();
    // Load the interstitial with the request.
    this.interstitial.LoadAd(request);

    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
    }

    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                            + args.Message);
    }

    public void HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleOnAdLeavingApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeavingApplication event received");
    }
}

OnAdFailedToLoad イベントには特別なイベント引数が含まれます。このイベントは、エラーを説明する Message を含む HandleAdFailedToLoadEventArgs のインスタンスを渡します。

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  print("Interstitial failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
広告イベント説明
OnAdLoaded OnAdLoaded イベントは広告の読み込みが完了したときに実行されます。
OnAdFailedToLoad OnAdFailedToLoad イベントは、広告の読み込みに失敗したときに呼び出されます。Message パラメータは、発生した障害のタイプを示します。
OnAdOpening このメソッドは、広告がデバイスの画面いっぱいに表示されたときに呼び出されます。
OnAdClosed このメソッドは、ユーザーが「閉じる」アイコンまたは「戻る」ボタンをタップしてインタースティシャル広告を閉じたときに呼び出されます。音声出力やゲームループを一時停止するアプリの場合は、ここで再開すると効果的です。
OnAdLeavingApplication ユーザーが別のアプリ(Google Play など)を起動して、現在のアプリをバックグラウンドで実行すると、このメソッドが OnAdOpened の後に呼び出さます。

インタースティシャル広告のクリーンアップ

InterstitialAd の使用を終えた場合は、これへの参照を破棄する前に、必ず Destroy() メソッドを呼び出してください。

interstitial.Destroy();

これにより、オブジェクトが使用されなくなり、占有されていたメモリを再利用できることがプラグインに通知されます。このメソッドを呼び出さないとメモリリークが発生します。

推奨事項

インタースティシャル広告が自分のアプリに適しているかどうかをよく見極めましょう。
インタースティシャル広告は、自然な移行ポイント(画面の切り替わりなど)があるアプリに適しています。画像の共有やゲームレベルのクリアなど、アプリ内で特定のタスクが完了したタイミングがこうした移行ポイントになります。ユーザーも流れの中断を想定しているため、インタースティシャル広告を表示しても操作性を損ないません。アプリ内のどの時点でインタースティシャル広告を表示し、ユーザーがそれにどう反応すると考えられるかを考慮しましょう。
インタースティシャル広告を表示する際には必ずアクションを一時停止しましょう。
インタースティシャル広告には、テキスト、イメージ、動画などのさまざまな種類があります。インタースティシャル広告を表示する際は、広告で使用されるリソースを考慮し、アプリの一部のリソースを一時停止させることが重要です。たとえばインタースティシャル広告を呼び出して表示する際は、アプリの音声出力を一時停止します。音声出力はイベント ハンドラ onAdClosed() で再開できます。このハンドラはユーザーが広告に対する操作を完了すると呼び出されます。この広告の表示中は、複雑な計算処理(ゲームループなど)も一時停止することをおすすめします。こうすると、画像の読み込みが遅くなったり停止したり、動画が頻繁に途切れたりする恐れがなくなります。
十分な読み込み時間を確保しましょう。
インタースティシャル広告を適切なタイミングで表示することも大事ですが、それと同様に読み込みの待ち時間を短くすることも重要です。loadAd() の呼び出しの前に show() を呼び出すことで、表示される前の段階でインタースティシャル広告の読み込みを完了させることができます。
過度に広告を表示しないよう注意しましょう。
インタースティシャル広告の表示頻度を増やすことで収益の向上が見込める一方、ユーザーの操作性は損なわれ、クリック率の低下にもつながります。頻繁に広告を表示するのは避け、ユーザーがアプリを楽しめるようにしましょう。

その他のリソース

サンプル

次のステップ

  • AdMob 管理画面で独自のインタースティシャル広告ユニットを作成します。
  • 次のような別の広告フォーマットを試します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。