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

インタースティシャル広告は、それまでアプリのインターフェース上に全画面表示される広告です。 終了です。通常は画面が切り替わる際に アプリのフロー(アクティビティ間や次のアクティビティ間の一時停止時など) 獲得できます。アプリにインタースティシャル広告が表示される場合、ユーザーは選択肢を提示できます。 広告をタップしてリンク先に移動するか、広告を閉じて戻ります。 必要があります。 事例紹介

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

前提条件

必ずテスト広告でテストする

アプリを作成、テストする際は、テスト広告ではなく、 配信します。実際の広告を使用すると、アカウントが停止される可能性があります。

テスト広告を読み込むには、専用のテスト広告ユニット ID を使う方法が最も簡単です iOS インタースティシャルの場合:
ca-app-pub-3940256099942544/4411468910

すべてのリクエストに対してテスト広告を返すように特別に構成されており、 独自のアプリでコーディング、テスト、デバッグの際に自由に使用できます。作成するだけで アプリを公開する前に、必ずご自身の広告ユニット ID に置き換えてください。

Mobile Ads SDK のテスト広告の仕組みについて詳しくは、 テスト広告

実装

インタースティシャル広告を実装する主な手順は次のとおりです。

  1. 広告を読み込みます。
  2. コールバックを登録します。
  3. 広告を表示し、報酬イベントを処理します。

広告を読み込む

広告の読み込みは、 次のオブジェクトの load(adUnitID:request) メソッド: GADInterstitial クラス。

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitial?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GADInterstitial.load(
          withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      } catch {
        print("Failed to load interstitial ad with error: \(error.localizedDescription)")
      }
    }
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
  private var interstitialAd: GADInterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitial loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
      request:request
      completionHandler:^(GADInterstitial *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

コールバックに登録する

プレゼンテーション イベントの通知を受け取るには、以下を実装する必要があります。 GADFullScreenContentDelegate プロトコルを使用し、 返された広告の fullScreenContentDelegate プロパティ。「 GADFullScreenContentDelegate プロトコルは、広告が 成功または失敗したか、閉じられたかを示します。次の コードは、プロトコルを実装して広告に割り当てる方法を示しています。

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitial?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GADInterstitial.load(
          withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
        interstitial?.fullScreenContentDelegate = self
      } catch {
        print("Failed to load interstitial ad with error: \(error.localizedDescription)")
      }
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

SwiftUI

返された広告に fullScreenContentDelegate プロパティを割り当てます。

interstitialAd?.fullScreenContentDelegate = self

プロトコルを実装します。

func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: GADFullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitial loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
      request:request
      completionHandler:^(GADInterstitial *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
    self.interstitial.fullScreenContentDelegate = self;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

GADInterstitial は使い捨てオブジェクトです。この つまり、一度インタースティシャル広告を表示すると、再度表示することはできません。ベスト 画面上部で別のインタースティシャル広告を GADFullScreenContentDelegateadDidDismissFullScreenContent: メソッドを使用して、 前のインタースティシャル広告が読み込まれるとすぐに次のインタースティシャル広告の読み込みが開始される。 破棄しました。

広告を表示する

インタースティシャルは、アプリの操作が一時停止する自然なタイミングで表示する必要があります。 ゲームのレベルが切り替わる合間やユーザーがタスクを完了した後などが良い例です。

Swift

guard let interstitial = interstitial else {
  return print("Ad wasn't ready.")
}

// The UIViewController parameter is an optional.
interstitial.present(fromRootViewController: nil)

SwiftUI

ビューの UI イベントをリッスンして、広告を表示するタイミングを決定します。

var body: some View {
  // ...
  }
  .onChange(of: countdownTimer.isComplete) { newValue in
    showGameOverAlert = newValue
  }
  .alert(isPresented: $showGameOverAlert) {
    Alert(
      title: Text("Game Over"),
      message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
      dismissButton: .cancel(
        Text("OK"),
        action: {
          viewModel.showAd()
        }))

ビューモデルからインタースティシャル広告を表示します。

func showAd() {
  guard let interstitialAd = interstitialAd else {
    return print("Ad wasn't ready.")
  }

  interstitialAd.present(fromRootViewController: nil)
}

Objective-C

if (self.interstitial) {
  // The UIViewController parameter is nullable.
  [self.interstitial presentFromRootViewController:nil];
} else {
  NSLog(@"Ad wasn't ready");
}

ベスト プラクティス

インタースティシャル広告がアプリに適した広告タイプかどうかを検討します。
インタースティシャル広告は、画面の切り替わりがあるアプリで最適に機能します。 画像の共有やアプリの完了といった、アプリ内のタスクの終了を ゲームレベルでは、そのようなポイントが生まれます。ユーザーが休憩を期待しているため ユーザーの操作を妨げずにインタースティシャル広告を 体験できますアプリのワークフローのどの時点で ユーザーの反応を予測します。
インタースティシャル広告を表示する際はアクションを一時停止してください。
インタースティシャル広告にはさまざまなタイプ(テキスト、イメージ、 使用できます。アプリの画面にコードを表示する際は、 リソースの使用を中断して広告が 活用してください。たとえば、スペースを表示するための呼び出しを行うと、 アプリからの音声出力は、必ず一時停止してください。 次の場所で音声の再生を再開できます: adDidDismissFullScreenContent: イベント ハンドラ。ユーザーが操作を完了すると呼び出されます。 広告とともに配信されますさらに、負荷の高い計算処理を一時的に停止することも ユーザーの操作(ゲームループなど)を自動的に行うため。これにより、 グラフィックが遅い、反応しない、スムーズに再生されない 動画をご覧ください。
読み込み時間は十分に確保してください。
インタースティシャル広告は一定の間隔で表示することが ユーザーに都合のよい時間を提供できるよう、 読み込みが完了するのを待ちます。表示する前に広告を読み込む アプリの準備が整い次第、インタースティシャル広告を確実に表示できます ディスプレイ広告の時代が来ました。
大量の広告をユーザーに表示することは避けてください。
アプリでインタースティシャル広告の表示頻度を増やすと、 ユーザーエクスペリエンスの低下にも つながります クリック率の低下につながりますユーザーがそれほど頻繁にアクセスしないようにします。 中断されることがなくなります。
読み込み完了コールバックをインタースティシャルの表示に使用しないでください。
ユーザー エクスペリエンスが低下する可能性があります。広告の読み込み前に広告が 表示されます。次に、canPresentFromRootViewController:error: メソッドを確認します。 準備が整っているかどうかを確認(GADInterstitial) 表示されます。

参考情報

GitHub の例

ご希望の言語でインタースティシャル広告のサンプル全体をご確認ください。

Mobile Ads Garage の動画チュートリアル

成功事例

次のステップ