バナー広告は、デバイス画面の上部または下部に表示されるアプリのレイアウト内の一部分に占有されます。アプリの操作中は画面に表示され続け、一定の時間が経過すると自動的に更新されます。モバイル広告を初めてご利用の場合は、この広告から始めるのが最適です。 事例紹介
このガイドでは、バナー広告をAdMob から iOS アプリに統合する方法を説明します。コード スニペットと設定手順に加え、バナーの適切なサイズ情報や、参考情報へのリンクも記載されています。
Prerequisites
- スタートガイドの手順を完了します。
常にテスト広告でテストする
アプリの開発とテストでは必ずテスト広告を使用し、配信中の実際の広告は使用しないでください。実際の広告を使用すると、アカウントが停止される可能性があります。
テスト広告を読み込む際は、次に示す iOS バナー向けのテスト専用広告ユニット ID を使うと簡単です。
ca-app-pub-3940256099942544/2934735716
この ID は、すべてのリクエストに対してテスト広告を返す特別な ID で、アプリのコーディング、テスト、デバッグで自由に使うことができます。なお、このテスト用 ID は、アプリを公開する前に必ずご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
GADBannerViewの作成
バナー広告は GADBannerView
オブジェクトで表示されるため、バナー広告を統合するための最初のステップは、ビュー階層に GADBannerView
を含めることです。この処理は、通常 Interface Builder またはプログラムを使用して行います。
インターフェース ビルダー
GADBannerView
は、通常のビューと同様に、ストーリーボードまたは xib ファイルに追加できます。このメソッドを使用する場合は、表示する広告サイズに合わせて幅と高さの制約を追加してください。たとえば、バナー(320x50)を表示する場合は、幅の制約(320 ポイント)と高さの制約(50 ポイント)を使用します。
プログラム
GADBannerView
は直接インスタンス化することもできます。次の例では、GADBannerView
を作成し、画面のセーフエリアの下中央に揃え、バナーサイズを 320x50 にしています。
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController { var bannerView: GADBannerView! override func viewDidLoad() { super.viewDidLoad() // In this case, we instantiate the banner with desired ad size. bannerView = GADBannerView(adSize: GADAdSizeBanner) addBannerViewToView(bannerView) } func addBannerViewToView(_ bannerView: GADBannerView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(bannerView) view.addConstraints( [NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: view.safeAreaLayoutGuide, attribute: .bottom, multiplier: 1, constant: 0), NSLayoutConstraint(item: bannerView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0) ]) } }
Objective-C
@import GoogleMobileAds; @interface ViewController () @property(nonatomic, strong) GADBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // In this case, we instantiate the banner with desired ad size. self.bannerView = [[GADBannerView alloc] initWithAdSize:GADAdSizeBanner]; [self addBannerViewToView:self.bannerView]; } - (void)addBannerViewToView:(UIView *)bannerView { bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:bannerView]; [self.view addConstraints:@[ [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1 constant:0], [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0] ]]; } @end
この場合、提供された幅または高さの制約は与えられません。指定された広告サイズによって、バナーのサイズは本来のコンテンツ サイズになるため、ビューのサイズを調整できなくなります。
定数で定義された標準サイズを使用しない場合は、GADAdSizeFromCGSize
を使用してカスタムサイズを設定できます。詳しくは、バナーのサイズに関する記事をご覧ください。
プロパティを GADBannerView 構成する
広告を読み込んで表示するために、GADBannerView
ではいくつかのプロパティを設定する必要があります。
rootViewController
- このビュー コントローラは、広告のクリック時にオーバーレイを表示するために使用されます。通常は、GADBannerView
を含むビュー コントローラに設定する必要があります。adUnitID
-GADBannerView
が広告を読み込む際の広告ユニット ID です。
UIViewController の viewDidLoad
メソッドで 2 つの必須プロパティを設定するコード例を次に示します。
Swift
override func viewDidLoad() { super.viewDidLoad() ... bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" bannerView.rootViewController = self }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; ... self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2934735716"; self.bannerView.rootViewController = self; }
広告を読み込む
GADBannerView
を配置し、そのプロパティを設定したら、広告を読み込みます。これを行うには、GADRequest
オブジェクトで loadRequest:
を呼び出します。
Swift
override func viewDidLoad() { super.viewDidLoad() ... bannerView.adUnitID = "ca-app-pub-3940256099942544/2934735716" bannerView.rootViewController = self bannerView.load(GADRequest()) }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; ... self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2934735716"; self.bannerView.rootViewController = self; [self.bannerView loadRequest:[GADRequest request]]; }
GADRequest オブジェクトは 1 つの広告リクエストを表し、ターゲティング情報などのプロパティが格納されます。
広告イベント
GADBannerViewDelegate
を使用すると、広告が終了したときやユーザーがアプリを離れたときなど、ライフサイクル イベントをリッスンできます。
バナーイベントの登録
バナー広告イベントを登録するには、GADBannerView
の delegate
プロパティを、GADBannerViewDelegate
プロトコルを実装するオブジェクトに設定します。一般に、バナー広告を実装するクラスは、デリゲート クラスとしても機能します。その場合、delegate
プロパティは self
に設定できます。
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADBannerViewDelegate { var bannerView: GADBannerView! override func viewDidLoad() { super.viewDidLoad() ... bannerView.delegate = self } }
Objective-C
@import GoogleMobileAds; @interface ViewController () <GADBannerViewDelegate> @property(nonatomic, strong) GADBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ... self.bannerView.delegate = self; }
バナーイベントを実装する
GADBannerViewDelegate
の各メソッドはオプションとしてマークされているため、必要なメソッドを実装するだけで済みます。この例では、各メソッドを実装して、メッセージをコンソールにロギングします。
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { print("bannerViewDidReceiveAd") } func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) { print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)") } func bannerViewDidRecordImpression(_ bannerView: GADBannerView) { print("bannerViewDidRecordImpression") } func bannerViewWillPresentScreen(_ bannerView: GADBannerView) { print("bannerViewWillPresentScreen") } func bannerViewWillDismissScreen(_ bannerView: GADBannerView) { print("bannerViewWillDIsmissScreen") } func bannerViewDidDismissScreen(_ bannerView: GADBannerView) { print("bannerViewDidDismissScreen") }
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView { NSLog(@"bannerViewDidReceiveAd"); } - (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error { NSLog(@"bannerView:didFailToReceiveAdWithError: %@", [error localizedDescription]); } - (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView { NSLog(@"bannerViewDidRecordImpression"); } - (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewWillPresentScreen"); } - (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewWillDismissScreen"); } - (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewDidDismissScreen"); }
iOS API デモアプリでバナー デリゲート メソッドを実装するには、Ad Delegate の例をご覧ください。
ユースケース
以下に、これらの広告イベント メソッドのユースケースの例を示します。
広告を受信したら、ビュー階層にバナーを追加する
広告を受信するまで、ビュー階層への GADBannerView
の追加を遅らせることをおすすめします。これを行うには、bannerViewDidReceiveAd:
イベントをリッスンします。
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { // Add banner to view and add constraints as above. addBannerViewToView(bannerView) }
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView { // Add bannerView to view and add constraints as above. [self addBannerViewToView:self.bannerView]; }
バナー広告のアニメーション化
次の例に示すように、bannerViewDidReceiveAd:
イベントを使用して、バナー広告が返されたらアニメーション化することもできます。
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { bannerView.alpha = 0 UIView.animate(withDuration: 1, animations: { bannerView.alpha = 1 }) }
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView { bannerView.alpha = 0; [UIView animateWithDuration:1.0 animations:^{ bannerView.alpha = 1; }]; }
アプリの一時停止と再開
GADBannerViewDelegate
プロトコルには、クリックによってオーバーレイの表示や閉じるなどのイベントを通知するメソッドが用意されています。これらのイベントが広告によるものかどうかをトレースする場合は、これらの GADBannerViewDelegate
メソッドに登録します。
クリックによるクリックだけでなく、あらゆる種類のオーバーレイ表示や外部ブラウザ呼び出しをキャッチするには、UIViewController
または UIApplication
の同等のメソッドをリッスンすることをおすすめします。次の表に、GADBannerViewDelegate
メソッドと同時に呼び出される、同等の iOS メソッドを示します。
GADBannerViewDelegate メソッド | iOS のメソッド |
---|---|
bannerViewWillPresentScreen: |
UIViewController&viewWillDisappear: 39 |
bannerViewWillDismissScreen: |
UIViewController&viewWillAppear: 39 |
bannerViewDidDismissScreen: |
UIViewController&viewDidAppear: 39 |
バナーのサイズ
下の表に標準バナーのサイズを示します。
ポイントのサイズ(WxH) | 説明 | 可用性 | AdSize 定数 |
---|---|---|---|
320×50 | バナー | スマートフォンとタブレット | GADAdSizeBanner |
320×100 | バナー(大) | スマートフォンとタブレット | GADAdSizeLargeBanner |
300×250 | IAB のレクタングル(中) | スマートフォンとタブレット | GADAdSizeMediumRectangle |
468×60 | IAB フルサイズ バナー | タブレット | GADAdSizeFullBanner |
728×90 | IAB リーダーボード | タブレット | GADAdSizeLeaderboard |
指定の幅 x アダプティブの高さ | アダプティブ バナー | 携帯電話とタブレット | N/A |
カスタム広告サイズ
カスタム バナーサイズを定義するには、次のように GADAdSizeFromCGSize
を使用して目的のサイズを設定します。
Swift
let adSize = GADAdSizeFromCGSize(CGSize(width: 300, height: 50))
Objective-C
GADAdSize size = GADAdSizeFromCGSize(CGSizeMake(300, 50));
参考情報
GitHub の例
バナー広告の例: Swift | Objective-C
高度な機能のデモ: Swift | Objective-C
GitHub のバナー UITableView の例: Swift | Objective-C
Mobile Ads Garage の動画チュートリアル
成功事例
次のステップ
詳しくは、ユーザーのプライバシーについての記事をご覧ください。