Реализация AFS для мобильных приложений (AFSMA) для iOS

Предварительные условия

В этом руководстве по внедрению предполагается, что вы знакомы со следующим:

Обзор

В этом документе описан процесс интеграции рекламы AFS для мобильных приложений (AFSMA) в ваше мобильное приложение iOS. Объявления AFSMA также иногда называют поисковыми объявлениями с динамической высотой. Чтобы запросить и отобразить объявления AFSMA на iOS, вам необходимо реализовать следующее:

GADSearchBannerView

  • Этот класс наследует класс iOS UIView и отображает рекламу AFSMA. GADSearchBannerView выполняет запрос объявления с помощью GADDynamicHeightSearchRequest и отображает возвращенные объявления. GADSearchBannerView следует добавить в любое из существующих представлений приложения; обычно родительский контроллер представления содержит представление, к которому добавляется GADSearchBannerView . Соответствующие делегаты должны быть установлены в GADSearchBannerView .
  • Для запроса объявлений AFSMA необходимо создать экземпляр GADSearchBannerView с помощью initWithAdSize:kGADAdSizeFluid . Создание GADSearchBannerView с помощью initWithAdSize:kGADAdSizeBanner запрашивает устаревшие объявления AFSMA.
  • Для свойства adUnitID этого объекта необходимо задать код вашего свойства.

GADDynamicHeightSearchRequest

  • Этот объект инкапсулирует параметры запроса объявления. Это аналогично настройке параметров в объектах запроса объявлений JavaScript (параметры страницы, параметры блоков) для настольных компьютеров и мобильных сайтов AFS.

(void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size

  • Этот обратный вызов вызывается при возврате запроса объявления. Поскольку возвращенный рекламный блок может содержать несколько объявлений с разными расширениями, точный размер рекламного блока на момент запроса объявления неизвестен. После возврата объявления необходимо обновить вид баннера, чтобы он соответствовал новому размеру рекламного блока. Здесь должен быть реализован код для изменения размера GADSearchBannerView в его родительском представлении.

Пример реализации

В приведенном ниже примере показано использование GBannerViewController для создания GADSearchBannerView как подпредставления UIScrollView . Чтобы правильно запросить объявления AFSMA, необходимо создать экземпляр объекта GADSearchBannerView с помощью initWithAdSize:kGADAdSizeFluid .

// GBannerViewController.m implementation

@interface GBannerViewController () <GADAdSizeDelegate,
                                     GADBannerViewDelegate>

@property(nonatomic, strong) GADSearchBannerView *searchBannerView;

@property(nonatomic, strong) UIScrollView *scrollView;

@end

@implementation GBannerViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // Create the scroll view.
  ....
  ....

  // Create the banner.
  self.searchBannerView = [[GADSearchBannerView alloc] initWithAdSize:kGADAdSizeFluid];

  // Replace with your pub ID (e.g. ms-app-pub-9616389000213823).
  self.searchBannerView.adUnitID = @"ms-app-pub-################";

  // Set the initial location and size of the banner. The initial height
  // is set to 0 since we might not get an ad back.
  self.searchBannerView.frame = CGRectMake(0,
                                           0,
                                           CGRectGetWidth(self.view.bounds),
                                           0);
  self.searchBannerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

  // Set the delegate properties.
  self.searchBannerView.adSizeDelegate = self;
  self.searchBannerView.delegate = self;

  // Add the new search banner into the parent scrollView.
  [self.scrollView addSubview:self.searchBannerView];
  }

В том же GBannerViewController создайте GADDynamicHeightSearchRequest , который определяет параметры объявления, которое будет отображаться в GADSearchView .

// Create a search request and load the banner.
GADDynamicHeightSearchRequest *searchRequest = [[GADDynamicHeightSearchRequest alloc] init];

// Ad request options (set using GADDynamicHeightSearchRequest properties).
searchRequest.query = @"flowers";
searchRequest.numberOfAds = 2;

// Replace with the ID of a style from your custom search styles
[searchRequest setAdvancedOptionValue:@"0000000001"
                               forKey:@"styleId"];

Другие параметры настройки возможны путем установки дополнительных свойств объекта GADDynamicHeightSearchRequest .

Чтобы сделать запрос объявления, вызовите loadRequest с объектом GADDynamicHeightSearchRequest из объекта GADSearchBannerView :

[self.searchBannerView loadRequest:searchRequest];

Чтобы родительское представление правильно размещало GADSearchBannerView после возврата рекламы, необходимо реализовать следующий обратный вызов.

// Callback to update the parent view height.
- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)size {
  // Update the banner view based on the ad size.
  CGRect newFrame = self.searchBannerView.frame;
  newFrame.size.height = size.size.height;
  self.searchBannerView.frame = newFrame;

  // Perform any additional logic needed due to banner view size change.
  ...
}

Расширенные настройки

Большинство параметров запроса объявления можно задать с помощью свойств объекта GADDynamicHeightSearchRequest ( searchRequest выше). Другие параметры необходимо будет установить с использованием пар ключ-значение с помощью метода setAdvancedOptionValue :

// Advanced customization options (set using key-value pair).

// Set a parameter (parameter_name) and its value (parameter_value).
[searchRequest setAdvancedOptionValue:@"parameter_value"
                               forKey:@"parameter_name"];

// Example: Show visible URL below description (domainLinkAboveDescription: false).
[searchRequest setAdvancedOptionValue:@"false"
                               forKey:@"domainLinkAboveDescription"];

См. полный список доступных параметров .

Исследование ошибок

GADBannerViewDelegate содержит обратный вызов, который поможет вам исследовать ошибки:

- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error {

  // This callback is triggered when the ad request fails.
  // Add code here to debug the error object to discover causes of failure
  NSLog(@"Ad call failed due to %@", error.userInfo[@"NSUnderlyingError"]);
}

Если запрос объявления не выполнен, вы можете использовать этот обратный вызов, чтобы правильно обработать ошибку и исследовать ее с помощью объекта ошибки.