広告イベント

このガイドでは、GADBannerViewDelegateGADInterstitialDelegate を使用して、バナー広告とインタースティシャル広告の広告イベントをリッスンする方法を説明します。 このイベントを使用すると、広告が読み込まれたときや、ユーザーが広告経由でアプリから離れたときなどのライフサイクル イベントをトラッキングできます。

実際に動作するバナー広告イベントを参照するには、Objective-C または Swift の iOS API Demo アプリをダウンロードしてください。

API Demo をダウンロードする

事前準備

スタートガイドを完了している。

基本的な参考情報

GADInterstitialDelegate を使用してインタースティシャル広告イベントをリスニングするための導入として、インタースティシャルをプロジェクトに追加する方法をご覧ください。

GADBannerViewDelegate を実装する

バナーイベントを登録する

バナー広告イベントを登録するには、GADBannerViewdelegate プロパティを、GADBannerViewDelegate プロトコルを実装するオブジェクトに設定します。通常、バナー広告を実装するクラスは、デリゲート クラスとしての役割も果たすため、delegate プロパティを self に設定できます。

Objective-C

#import "GADBannerView.h"
#import "GADBannerViewDelegate.h"

@interface ViewController () <GADBannerViewDelegate>

@property(nonatomic, strong) GADBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.bannerView = [[GADBannerView alloc] initWithAdSize:kGADAdSizeBanner];
  self.bannerView.delegate = self;
}

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADBannerViewDelegate {

  var bannerView: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    bannerView = GADBannerView(adSize: kGADAdSizeBanner)
    bannerView.delegate = self
  }
}

バナーイベントを実装する

GADBannerViewDelegate の各メソッドはオプションであるため、必要なメソッドを実装するだけで十分です。以下のサンプルでは、各メソッドを実装して、コンソールにログとしてメッセージを出力しています。

Objective-C

/// Tells the delegate an ad request loaded an ad.
- (void)adViewDidReceiveAd:(GADBannerView *)adView {
  NSLog(@"adViewDidReceiveAd");
}

/// Tells the delegate an ad request failed.
- (void)adView:(GADBannerView *)adView
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"adView:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

/// Tells the delegate that a full screen view will be presented in response
/// to the user clicking on an ad.
- (void)adViewWillPresentScreen:(GADBannerView *)adView {
  NSLog(@"adViewWillPresentScreen");
}

/// Tells the delegate that the full screen view will be dismissed.
- (void)adViewWillDismissScreen:(GADBannerView *)adView {
  NSLog(@"adViewWillDismissScreen");
}

/// Tells the delegate that the full screen view has been dismissed.
- (void)adViewDidDismissScreen:(GADBannerView *)adView {
  NSLog(@"adViewDidDismissScreen");
}

/// Tells the delegate that a user click will open another app (such as
/// the App Store), backgrounding the current app.
- (void)adViewWillLeaveApplication:(GADBannerView *)adView {
  NSLog(@"adViewWillLeaveApplication");
}

Swift

/// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
  print("adViewDidReceiveAd")
}

/// Tells the delegate an ad request failed.
func adView(_ bannerView: GADBannerView,
    didFailToReceiveAdWithError error: GADRequestError) {
  print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

/// Tells the delegate that a full screen view will be presented in response
/// to the user clicking on an ad.
func adViewWillPresentScreen(_ bannerView: GADBannerView) {
  print("adViewWillPresentScreen")
}

/// Tells the delegate that the full screen view will be dismissed.
func adViewWillDismissScreen(_ bannerView: GADBannerView) {
  print("adViewWillDismissScreen")
}

/// Tells the delegate that the full screen view has been dismissed.
func adViewDidDismissScreen(_ bannerView: GADBannerView) {
  print("adViewDidDismissScreen")
}

/// Tells the delegate that a user click will open another app (such as
/// the App Store), backgrounding the current app.
func adViewWillLeaveApplication(_ bannerView: GADBannerView) {
  print("adViewWillLeaveApplication")
}

iOS API Demo アプリでのバナー デリゲート メソッドの実装については、AdMob Ad Delegate サンプルを参照してください。

Objective-C Swift

使用例

これらの広告イベント メソッドの使用に適したケースをいくつか紹介します。

広告が取得されてからバナーをビュー階層に追加する

広告が取得されるまで、ビュー階層への GADBannerView の追加を保留できます。これは、adViewDidReceiveAd: イベントをリスニングすることで実現できます。

Objective-C

- (void)adViewDidReceiveAd:(GADBannerView *)adView {
  [self.view addSubview:adView];
}

Swift

func adViewDidReceiveAd(_ bannerView: GADBannerView) {
  view.addSubview(bannerView)
}

addSubview: メソッドでは、親にすでに含まれているビューが自動的に削除されるため、毎回この呼び出しを実行しても安全です。

バナー広告をアニメーション表示する

バナー広告が返されたら、adViewDidReceiveAd: イベントを使用して、次の例に示すように、バナー広告をアニメーション表示することもできます。

Objective-C

- (void)adViewDidReceiveAd:(GADBannerView *)adView {
  adView.alpha = 0;
  [UIView animateWithDuration:1.0 animations:^{
    adView.alpha = 1;
  }];
}

Swift

func adViewDidReceiveAd(_ bannerView: GADBannerView) {
  bannerView.alpha = 0
  UIView.animate(withDuration: 1, animations: {
    bannerView.alpha = 1
  })
}

サードパーティ アナリティクス

この SDK では、自動的にクリックとインプレッションがトラッキングされますが、サードパーティのアナリティクス ソリューションも使用している場合は、GADBannerViewDelegate 呼び出しを個別にトラッキングすることもできます。

アプリを一時停止および再開する

GADBannerViewDelegate プロトコルには、クリックによってオーバーレイを表示したり閉じたりする、または外部ブラウザを起動する、などのイベントを通知するメソッドがあります。広告が要因となってこれらのイベントが発生したことを確認するには、GADBannerViewDelegate の以下のメソッドを登録します。

ただし、全種類のオーバーレイ表示や外部ブラウザの起動をキャッチするには、広告クリックで呼び出されるメソッドだけでなく、UIViewControllerUIApplication. の同等のメソッドをアプリでリスニングすることをおすすめします。 次の表は、GADBannerViewDelegate のメソッドと同じタイミングで呼び出される、iOS の同等のメソッドを示しています。

GADBannerViewDelegate のメソッド iOS のメソッド
adViewWillPresentScreen: UIViewController の viewWillDisappear:
adViewWillDismissScreen: UIViewController の viewWillAppear:
adViewDidDismissScreen: UIViewController の viewDidAppear:
adViewWillLeaveApplication: UIApplicationDelegate の applicationDidEnterBackground:

GADInterstitialDelegate の実装

インタースティシャル イベントを登録する

インタースティシャル広告イベントを登録するには、GADInterstitial のプロパティ delegate を、GADInterstitialDelegate プロトコルを実装するオブジェクトに設定します。通常、インタースティシャル広告を実装するクラスは、デリゲート クラスとしての役割も果たすため、次のように delegate プロパティを self に設定できます。

Objective-C

#import "GADInterstitial.h"
#import "GADInterstitialDelegate.h"

@interface ViewController () <GADInterstitialDelegate>

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:"ca-app-pub-3940256099942544/4411468910"];
  self.interstitial.delegate = self;
}

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADInterstitialDelegate {

  var interstitial: GADInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitial = GADInterstitial(adUnitID: "ca-app-pub-3940256099942544/4411468910")
    interstitial.delegate = self
  }
}

インタースティシャル イベントを実装する

GADInterstitialDelegate の各メソッドはオプションであるため、必要なメソッドを実装するだけで十分です。以下のサンプルでは、各メソッドを実装して、コンソールにログとしてメッセージを出力しています。

Objective-C

/// Called when an interstitial ad request succeeded.
- (void)interstitialDidReceiveAd:(GADInterstitial *)ad {
  NSLog(@"interstitialDidReceiveAd");
}

/// Called when an interstitial ad request failed.
- (void)interstitial:(GADInterstitial *)ad
    didFailToReceiveAdWithError:(GADRequestError *)error {
  NSLog(@"interstitial:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}

/// Called just before presenting an interstitial.
- (void)interstitialWillPresentScreen:(GADInterstitial *)ad {
  NSLog(@"interstitialWillPresentScreen");
}

/// Called before the interstitial is to be animated off the screen.
- (void)interstitialWillDismissScreen:(GADInterstitial *)ad {
  NSLog(@"interstitialWillDismissScreen");
}

/// Called just after dismissing an interstitial and it has animated off the screen.
- (void)interstitialDidDismissScreen:(GADInterstitial *)ad {
  NSLog(@"interstitialDidDismissScreen");
}

/// Called just before the app will background or terminate because the user clicked on an
/// ad that will launch another app (such as the App Store).
- (void)interstitialWillLeaveApplication:(GADInterstitial *)ad {
  NSLog(@"interstitialWillLeaveApplication");
}

Swift

/// Called when an interstitial ad request succeeded.
func interstitialDidReceiveAd(_ ad: GADInterstitial) {
  print("interstitialDidReceiveAd")
}

/// Called when an interstitial ad request failed.
func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) {
  print("interstitial:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

/// Called just before presenting an interstitial.
func interstitialWillPresentScreen(_ ad: GADInterstitial) {
  print("interstitialWillPresentScreen")
}

/// Called before the interstitial is to be animated off the screen.
func interstitialWillDismissScreen(_ ad: GADInterstitial) {
  print("interstitialWillDismissScreen")
}

/// Called just after dismissing an interstitial and it has animated off the screen.
func interstitialDidDismissScreen(_ ad: GADInterstitial) {
  print("interstitialDidDismissScreen")
}

/// Called just before the application will background or terminate because the user clicked on an
/// ad that will launch another app (such as the App Store).
func interstitialWillLeaveApplication(_ ad: GADInterstitial) {
  print("interstitialWillLeaveApplication")
}

使用例

サードパーティ アナリティクス

この SDK では、自動的にクリックとインプレッションがトラッキングされますが、サードパーティのアナリティクス ソリューションも使用している場合は、GADInterstitialDelegate 呼び出しを個別にトラッキングすることもできます。

よくある質問

メディエーションを使用している場合に、GADBannerViewDelegate および GADInterstitialDelegate イベント通知を取得できますか?
はい。メディエーション アダプタでは、これらのイベントをすべて送信する必要があるため、各イベントはアプリに転送されます。
interstitialDidReceiveAd: イベントを使用して、インタースティシャルを表示できますか?
この方法は、ユーザー エクスペリエンスが低下することがあるためおすすめの方法ではありません。代わりに、表示が必要になる前に広告をプリロードし、GADInterstitialisReady メソッドをチェックして、表示の準備ができているかどうかをご確認ください。

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