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

インタースティシャル広告は、アプリの上にオーバーレイで表示されるフルスクリーン広告です。 通常、ゲームのレベルが切り替わる際など、アプリの画面が変わる自然なタイミングで表示されます。

このガイドでは、インタースティシャル広告を Google モバイル広告 iOS アプリに組み込む方法を説明します。

Google が提供している広告ユニットとサンプルでは、テスト広告が返されます。テスト広告は、アカウントが停止中であったり、無効であったりしても、常時利用できます。詳細については、AdMob のポリシーを確認し、無効な操作をご覧ください。

ご自分の実際の広告をクリックすることは、AdMob のポリシーに反します。開発およびテスト中は、テスト広告のみを使用してください。運用開始前に実際の広告を表示する必要がある場合は、広告をクリックしないようにしてください。実際の広告をクリックした場合、AdMob アカウントが停止されることがあります。

事前準備

スタートガイドの Firebase および Mobile Ads SDK を追加するセクションを完了している。

基本的な参考情報

  • インタースティシャルのサンプルをダウンロードして、手順に従ってインタースティシャル広告をプロジェクトに追加できます。

    Objective-C Swift

  • インタースティシャル広告のメリットを十分に活用するには、広告イベントガイドをご覧ください。このガイドで示す例の中には、広告イベントを使用して、インタースティシャルをより詳細に設定して組み込んでいるものもあります。

プロジェクトにインタースティシャル広告を追加する

GADInterstitial は、アプリ起動時にプリロードし、アプリの準備が完了した適切なタイミングで表示するというライフサイクルで使用することをおすすめします。以下のスニペットでは、GADInterstitial プロパティを作成する方法、初期化する方法、広告を読み込む方法を示しています。

Objective-C

@import GoogleMobileAds;

@interface ViewController () <UIAlertViewDelegate>

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [self startNewGame];
}

- (void)startNewGame {
  [self createAndLoadInterstitial];

  // Set up a new game.
}

 - (void)createAndLoadInterstitial {
  self.interstitial =
      [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];

  GADRequest *request = [GADRequest request];
  // Request test ads on devices you specify. Your test device ID is printed to the console when
  // an ad request is made.
  request.testDevices = @[ kGADSimulatorID, @"2077ef9a63d2b398840261c8221a0c9b" ];
  [self.interstitial loadRequest:request];
}

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, UIAlertViewDelegate {

  var interstitial: GADInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()

    startNewGame()
  }

  fileprivate func startNewGame() {
    createAndLoadInterstitial()

    // Set up a new game.
  }

  fileprivate func createAndLoadInterstitial() {
    interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
    let request = GADRequest()
    // Request test ads on devices you specify. Your test device ID is printed to the console when
    // an ad request is made.
    request.testDevices = [ kGADSimulatorID, "2077ef9a63d2b398840261c8221a0c9b" ]
    interstitial.load(request)
  }
}

インタースティシャルは、区切りとなる自然なタイミングで表示する必要があります。インタースティシャルを表示する準備ができたら、表示する前に準備できているかどうかを確認します。次は、ゲームオーバー時にインタースティシャルを表示する例です。

Objective-C

- (void)endGame {
  [[[UIAlertView alloc]
          initWithTitle:@"Game Over"
                message:@"Your time ran out!"
               delegate:self
      cancelButtonTitle:@"Ok"
      otherButtonTitles:nil] show];
}

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex {
  if (self.interstitial.isReady) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
  // Give user the option to start the next game.
}

Swift

fileprivate func endGame() {
  UIAlertView(title: "Game Over",
              message: "Your time ran out!",
              delegate: self,
              cancelButtonTitle: "Ok").show()
}

func alertView(_ alertView: UIAlertView, willDismissWithButtonIndex buttonIndex: Int) {
  if interstitial.isReady {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
  // Give user the option to start the next game.
}

アプリは、このメソッドを適切なタイミングで明示的に呼び出す必要があります。

結果

インタースティシャル広告が表示されると、アプリの外見は次のようになります。

一度だけ GADInterstitial を表示

GADInterstitial は使い捨てオブジェクトです。つまり、インタースティシャルが表示されると、hasBeenUsedtrue を返し、インタースティシャルを使用して別の広告を読み込むことができなくなります。別のインタースティシャルをリクエストする際は、新しい GADInterstitial オブジェクトを作成する必要があります。おすすめの方法は、上記のように、インタースティシャルの作成および読み込みを処理するためのヘルパー メソッドを持つことです。

別のインタースティシャルを割り当てる最適な場所は、GADInterstitialDelegateinterstitialDidDismissScreen: メソッド内です。このメソッドでは、前のインタースティシャルの表示が終了したらすぐに次のインタースティシャルの読み込みを開始できます。インタースティシャルの初期化は、そのインタースティシャルのヘルパー メソッドで実行することもできます。

Objective-C

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [self createAndLoadInterstitial];
}

- (GADInterstitial *)createAndLoadInterstitial {
  GADInterstitial *interstitial =
      [[GADInterstitial alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"];
  interstitial.delegate = self;
  [interstitial loadRequest:[GADRequest request]];
  return interstitial;
}

- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {
  self.interstitial = [self createAndLoadInterstitial];
}

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  interstitial = createAndLoadInterstitial()
}

func createAndLoadInterstitial() -> GADInterstitial {
  var interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
  interstitial.delegate = self
  interstitial.load(GADRequest())
  return interstitial
}

func interstitialDidDismissScreen(_ ad: GADInterstitial) {
  interstitial = createAndLoadInterstitial()
}

前のインタースティシャルの表示が終了したらすぐに次のインタースティシャルをプリロードすることで、次の論理的な切り替えポイントでインタースティシャルを再度表示するための準備ができます。

よくある質問

インタースティシャル広告のユーザー エクスペリエンスを最適化するにはどうすればよいですか?
インタースティシャルの実装に関するガイドラインをご覧ください。
「Cannot present interstitial. It is not ready」(インタースティシャルを表示できません。準備できていません)というメッセージが表示されます。
このエラーは、インタースティシャル広告を正常にフェッチできなかったことを意味します。この警告が発生しないようにするには、isReady メソッドを使用して、インタースティシャルを表示する準備ができているかどうかをチェックします。
「Request Error: Will not send request because interstitial object has been used」(リクエスト エラー: インタースティシャル オブジェクトが使用済みのためリクエストは送信されません)というエラーが表示されます。
インタースティシャルは使い捨てオブジェクトです。 別のインタースティシャル広告をリクエストするには、新しいインタースティシャル オブジェクトを作成する必要があります。
「Request Error. No ads to show」(リクエスト エラー: 表示する広告がありません)というエラーが表示され、広告が表示されません。

広告ユニットを作成する際は、広告タイプとして必ずインタースティシャルを指定してください。インタースティシャル広告は、バナータイプの広告ユニットには掲載されません。

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