ネイティブ スタイル

ネイティブ スタイルの設定を使用すると、Google アド マネージャーで商品内で指定したネイティブ スタイルに基づいてネイティブ広告のレンダリングを処理できます。まず、サイズとターゲティングを指定します。 次に、HTML、CSS、JavaScript を追加して、あらゆる画面で高品質でレスポンシブな広告を定義します。レンダリングは一切不要で、アド マネージャーによってリンク先に適したネイティブ スタイルが自動的に適用されます。ネイティブ スタイルはバナー広告と同様に、GAMBannerView を使って実装します。事前に決定した固定の広告サイズ、または実行時に決定した流動的な広告サイズで使用できます。

前提条件

  • Google Mobile Ads SDK バージョン 7.14.0 以降

このガイドは、Google Mobile Ads SDK の実践知識があることを前提としています。まだ開始していない場合は、スタートガイドを確認することをおすすめします。

固定サイズ

固定サイズのネイティブ スタイルを使用すると、ネイティブ広告の幅と高さを制御できます。固定サイズに設定する手順は次のとおりです。

  1. アド マネージャーの管理画面で広告申込情報を作成し、[Size] 欄のプルダウンから定義済みのサイズのいずれかを選択します。

  2. Interface Builder で、GAMBannerView の幅と高さを、手順 1 で選択した事前定義のサイズに合わせて設定します。サイズのリストと、それぞれに対応する GADAdSize 定数は、バナーサイズのセクションで確認できます。

固定サイズでネイティブ スタイルを実装する方法は、最初のバナー リクエストの手順に沿って簡単に行えますが、HTML、CSS、JavaScript を柔軟に管理して、バナー広告にアプリに合ったネイティブな外観を設定できます。

Fluid サイズ

固定サイズでも意味がない場合もあります。たとえば、広告の幅をアプリのコンテンツと一致させたいものの、高さは広告のコンテンツに合わせて動的に調整する必要がある場合があります。このようなケースに対処するには、アド マネージャー管理画面で広告サイズとして Fluid を指定します。これにより、広告のサイズはアプリの実行時に決定されるように指定します。SDK には、特殊な GADAdSize 定数 kGADAdSizeFluid が用意されています。Fluid 広告サイズの高さは、パブリッシャーが定義した幅に基づいて動的に決定され、GAMBannerView でクリエイティブの高さに合わせて高さが調整されます。

Fluid リクエスト

他の広告フォーマットとは異なり、kGADAdSizeFluid の広告サイズでは幅が事前に定義されていません。そのため、コードまたは Interface Builder でバナーのフレーム幅を明示的に設定してください。幅が指定されていない場合、SDK はデフォルトでデバイスの幅全体に基づいてバナーの高さを設定します。

kGADAdSizeFluid を含む複数サイズのリクエストを行うと、常に流動的なコンテナ内に配置され、流動的な広告と同じように動作します。この Fluid コンテナに非流動のクリエイティブが返されると、SDK によって広告がコンテナの中央に配置されます。新しい広告が返されるたびに幅の制約を変更する必要はありません。

シングルサイズ リクエストと複数サイズのフルード リクエストの実装は非常に似ています。唯一の違いは複数サイズのリクエストであり、validAdSizes プロパティを設定して、広告リクエストで有効な広告サイズを指定します。

Swift

bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
                           NSValueFromGADAdSize(kGADAdSizeBanner)]

Objective-C

_bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
                              NSValueFromGADAdSize(kGADAdSizeBanner) ];

コード全体の実装は次のようになります。

Swift

var bannerView: GAMBannerView!

override func viewDidLoad() {
  super.viewDidLoad()
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  bannerView = GAMBannerView(adSize: kGADAdSizeFluid)
  var frameRect = bannerView.frame
  frameRect.size.width = view.bounds.width
  bannerView.frame = frameRect

  // Uncomment this code for a multisize fluid request.
  // bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
  //                            NSValueFromGADAdSize(kGADAdSizeBanner)]

  bannerView.adUnitID = "YOUR_AD_UNIT_ID"
  bannerView.rootViewController = self

  // Make the ad request.
  bannerView.load(GAMRequest())
}

Objective-C

GAMBannerView *_bannerView;

- (void)viewDidLoad {
  [super viewDidLoad];
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  _bannerView = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeFluid];
  CGRect frameRect = _bannerView.frame;
  frameRect.size.width = CGRectGetWidth(self.view.bounds);
  _bannerView.frame = frameRect;

  // Uncomment this code for a multisize fluid request.
  // _bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
  //                               NSValueFromGADAdSize(kGADAdSizeBanner) ];

  _bannerView.adUnitID = @"YOUR_AD_UNIT_ID";
  _bannerView.rootViewController = self;

  // Make the ad request.
  [_bannerView loadRequest:[GAMRequest request]];
}

アド マネージャー Fluid 広告サイズの実装例を確認するには、Swift または Objective-C で iOS API デモアプリをダウンロードしてください。

API デモをダウンロード

GADAdSizeDelegate プロトコル

広告サイズを変更する前に、バナーの高さを把握しておくことをおすすめします。 バナービューが新しい GADAdSize に変わる前に、adView:willChangeAdSizeTo: コールバックはデリゲートに通知します。バナービューが新しい広告サイズに変わる前に通知を受け取るには、クラスが GADAdSizeDelegate プロトコルに準拠している必要があります。

バナーの新しい幅と高さを取得する方法を示す adView:willChangeAdSizeTo: コールバックの実装例を次に示します。

Swift

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
bannerView.adSizeDelegate = self

// MARK: - GADAdSizeDelegate

func adView(_ bannerView: GADBannerView, willChangeAdSizeTo adSize: GADAdSize) {
  let height = adSize.size.height
  let width = adSize.size.width
}

Objective-C

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
_bannerView.adSizeDelegate = self;

#pragma mark - GADAdSizeDelegate

- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)adSize {
  CGFloat height = adSize.size.height;
  CGFloat width = adSize.size.width;
}