iOS 向けの AFS ネイティブの実装

Google Mobile Ads SDK では、カスタム検索スタイルもサポートされています。アプリですでに Google Mobile Ads SDK を使用している場合は、代わりに AFSMA SDK バージョンを使用することをおすすめします。

前提条件

  • Xcode 8.0 以降を使用する
  • iOS 8.0 以降をターゲットに設定すること
  • パブリッシャーの有効なウェブ プロパティ コード(例: vert-ppa-test1-srp)
  • CocoaPods

AFS Native SDK をインポートする

CocoaPods

CocoaPods を使用して、Google-AFSNative SDK を iOS プロジェクトにインポートします。プロジェクトの Podfile を開き、アプリのターゲットに次の行を追加します。

pod 'Google-AFSNative'

次に、コマンドラインから以下を実行します。

pod install --repo-update

CocoaPods を初めてご利用の場合は、CocoaPods の公式ドキュメントで Podfile の作成方法と使用方法をご確認ください。

概要

2.0.8 以前からバージョン 4.0 以降にアップグレードする場合は、移行ガイドをご覧ください。

このドキュメントでは、AFS ネイティブ広告を iOS モバイルアプリに統合するプロセスの概要を説明します。

GANSearchAdController

  • GANSearchAdController コンストラクタには、パブリッシャーのウェブ プロパティ コード、必要な設定 ID、関連する GANSearchAdControllerOptions オブジェクトを指定する必要があります。
  • loadAds() を呼び出すたびに新しい検索が指示され、現在の広告セットが破棄されて無効化されます。
  • 広告クリエイティブは GANAdView に保存されます。
  • 広告は、populateAdView メソッドを使用して広告 GANAdView に挿入されます。入力される GANAdView に加えて、呼び出し元は adIdentifier を指定します。これは、広告を一意に識別する任意の文字列です。API 内では、渡された adIdentifier に特定の広告が割り当てられます。その後、その adKey が再度渡されると、同じ広告が返されます。たとえば、adIdentifier「keyA」で初めて populateAdView が呼び出された場合、その後に「keyA」を adIdentifier として渡しながら populateAdView を呼び出すたびに、同じ広告が表示されます。

GANAdView

  • これは、広告クリエイティブを含む UIView です。
  • GANSearchAdControllerpopulateAdView メソッドを使用して、このビューに広告を入力します。

GANSearchAdControllerOptions

  • このオブジェクトを GANSearchAdController コンストラクタに渡して、広告がリクエストされて表示される方法を指定します。

GANSearchAdRequest

  • このオブジェクトを指定して GANSearchAdController インスタンスの loadAds メソッドを呼び出し、広告リクエストを作成します。

GANSearchAdControllerDelegate

  • このインターフェースを実装して GANSearchAdController に渡して、いくつかの状態のコールバックを登録します。

実装例

以下の例は、サンプル ViewController で広告を表示する GANSearchAdControllerGANView の作成方法を示しています。

// SampleAppViewController.m implementation

#import <AFSNative/AFSNative.h>

@interface GBannerViewController () {
  // The Ad Controller used by the sample application.
  GANSearchAdController *_adController;

  // The Ad View to display the loaded ad.
  GANAdView *_adView;
}
// scrollView will be where we place our ads in this example.
@property(nonatomic, strong) UIScrollView *scrollView;
@end
...

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ...
  [self.view addSubview:scrollView];

  // Create a test button and link the ad request to its action.
  UIButton *loadBannerButton = [UIButton buttonWithType:UIButtonTypeCustom];
  ...
  [loadBannerButton addTarget:self
                       action:@selector(loadAd:)
             forControlEvents:UIControlEventTouchUpInside];
  [self.scrollView addSubview:loadBannerButton];

  // Construct the Ad Controller.
  GANSearchAdControllerOptions *options = [[GANSearchAdControllerOptions alloc] init];
  options.prefetchEnabled = YES;
  options.adType = GANSearchAdTypeSPA;
  options.adFetchCount = 3;

  _adController = [[GANSearchAdController alloc]
                     initWithPublisherID: @"your-client-id"
                                 styleID: @"your-settings-id"
                                 options: options
                                delegate: self];

  _adView = [_adController adView];
  [self.scrollView addSubview:_adView];
}

// Request ads when the test button is pressed.
- (void)loadAd:(id)sender {
  // Construct the Ad Request.
  GANSearchAdRequest *adRequest = [[GANSearchAdRequest alloc] init];
  adRequest.query =  @"some-query";
  // Start loading ads. Note that the loading is asynchronous.
  [_adController loadAds: adRequest];
}

// Insert ads into GANAdView if the request returns successfully.
- (void)searchAdController:(GANSearchAdController *)adController  
                didLoadAds:(NSInteger)numberOfAds {
  if (numberOfAds <= 0) {
    NSLog(@"No ads found on the server");
  } else {
    [_adController populateAdView:_adView identifier:@"demoAd"];
  }
}
...