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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

インタースティシャル広告は、ホストアプリのインターフェース上に全画面表示される広告です。通常は、次のフローの合間など、アプリのフローの自然な移行ポイントで表示されます。アプリにインタースティシャル広告が表示される場合、ユーザーは広告をタップしてリンク先に移動するか、広告を閉じてアプリに戻るかを選択できます。事例紹介

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

Prerequisites

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

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

Unity Editor を使用して広告を簡単に組み込むには、新しい広告プレースメント(ベータ版)をお試しください。

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 が含まれており、これを使用して広告をリクエストできます。この ID は、すべてのリクエストに対して本番環境の広告ではなくテスト用の広告を返すように特別に構成されているため、安全に使用できます。

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

広告を読み込む

InterstitialAd がインスタンス化されたら、次の手順で広告を読み込みます。これは、InterstitialAd クラスの loadAd() メソッドで行います。単一の広告リクエストに関するランタイム情報(ターゲティング情報など)を保持する AdRequest 引数を受け取ります。

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

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 += HandleOnAdOpening;
    // Called when the ad is closed.
    this.interstitial.OnAdClosed += HandleOnAdClosed;

    // 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 HandleOnAdOpening(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdOpening event received");
}

public void HandleOnAdClosed(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdClosed 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 このメソッドは、ユーザーが「閉じる」アイコンまたは「戻る」ボタンをタップして、インタースティシャル広告を閉じると呼び出されます。アプリで音声出力やゲームループを一時停止している場合は、ここで再開することをおすすめします。

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

InterstitialAd の作業が終了したら、必ず Destroy() メソッドを呼び出してから、その参照への参照をドロップします。

interstitial.Destroy();

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

ベスト プラクティス

インタースティシャル広告がアプリに適した広告タイプかどうかを検討します。
インタースティシャル広告は、自然な移行ポイント(画面の切り替わりなど)があるアプリに適しています。 画像の共有やゲームレベルの完了など、アプリ内でのタスクが完了すると、その時点になります。ユーザーは操作が途切れることを想定しているため、インタースティシャル広告を邪魔することなく簡単に表示できます。インタースティシャル広告をアプリのワークフローのどの時点で表示するか、またユーザーがどのように回答する可能性が高いかを必ず検討してください。
インタースティシャル広告を表示するときは、必ず操作を一時停止してください。
インタースティシャル広告には、テキスト、イメージ、動画など、さまざまなタイプがあります。アプリにインタースティシャル広告を表示する場合は、一部のリソースの使用を一時停止し、広告を活用できるようにすることが重要です。たとえば、インタースティシャル広告を表示するための呼び出しを行った場合は、アプリによる音声出力を一時停止してください。音声の再生は onAdClosed() イベント ハンドラで再開できます。このイベントは、ユーザーが広告を操作すると呼び出されます。また、広告の表示中は、負荷の高いコンピューティング タスク(ゲームループなど)を一時的に停止することを検討してください。これにより、グラフィックが遅い、反応しない、または動画途切れのノイズが発生することはありません。
十分な読み込み時間を確保する。
インタースティシャル広告を適切なタイミングで表示することが重要ですが、広告が読み込まれるのを待たずに済むことも重要です。show() を呼び出す前に loadAd() を呼び出して広告を事前に読み込んでおくと、インタースティシャル広告を表示する準備が整ったときに、アプリの読み込みが完了するようになります。
大量の広告をユーザーに表示しないでください。
アプリ内のインタースティシャル広告の頻度を増やすことは、収益を増やすには良いように思えるかもしれませんが、ユーザー エクスペリエンスが低下し、クリック率が低下する可能性もあります。ユーザーがアプリを楽しめなくなるため、過度に頻繁に広告を表示するのは避けてください。

参考情報

サンプル

成功事例