iOS용 AFS 네이티브 구현

Google 모바일 광고 SDK는 맞춤 검색 스타일도 지원합니다. 앱에서 이미 Google 모바일 광고 SDK를 사용하는 경우 AFSMA SDK 버전을 대신 사용하는 것이 좋습니다.

기본 요건

  • Xcode 8.0 이상 사용
  • iOS 8.0 이상 타겟팅
  • 유효한 게시자 웹 속성 코드 (예: vert-ppa-test1-srp)
  • CocoaPods

AFS 네이티브 SDK 가져오기

CocoaPods

CocoaPods를 사용하여 Google-AFSNative SDK를 iOS 프로젝트로 가져옵니다. 프로젝트의 Podfile을 열고 다음 행을 앱의 타겟에 추가하세요.

pod 'Google-AFSNative'

그런 다음 명령줄에서 다음을 실행합니다.

pod install --repo-update

CocoaPods를 처음 사용하는 경우에는 Podfile을 만들고 사용하는 방법에 대한 공식 문서를 읽어보세요.

개요

2.0.8 이하에서 버전 4.0 이상으로 업그레이드하는 경우 이전 가이드를 참조하세요.

이 문서에서는 iOS 모바일 앱에 AFS 네이티브 광고를 통합하는 과정을 간략하게 설명합니다.

GANSearchAdController

  • GANSearchAdController 생성자에 게시자의 웹 속성 코드, 원하는 설정 ID, 연결된 GANSearchAdControllerOptions 객체를 제공해야 합니다.
  • loadAds()를 호출할 때마다 새 검색을 나타내며, 현재 광고 세트가 삭제되고 무효화됩니다.
  • 광고 소재는 GANAdView에 저장됩니다.
  • 광고는 populateAdView 메서드를 사용하여 광고 GANAdView에 삽입됩니다. 호출자는 채워야 하는 GANAdView 외에도 광고를 고유하게 식별해야 하는 임의의 문자열인 adIdentifier를 제공합니다. API 내에서는 전달된 각 adIdentifier에 특정 광고가 할당됩니다. 그러면 나중에 이 adKey가 다시 전달될 때마다 동일한 광고가 반환됩니다. 예를 들어 populateAdView가 adIdentifier 'keyA'로 처음 호출되는 경우 'keyA'를 adIdentifier로 전달하는 동안 이후에 populateAdView를 호출할 때마다 동일한 광고가 게재됩니다.

GANAdView

  • 이는 광고 소재가 포함된 UIView입니다.
  • GANSearchAdController에서 populateAdView 메서드를 사용하여 이 뷰를 광고로 채웁니다.

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"];
  }
}
...