Нативные объявления

Нативная реклама — это рекламные ресурсы, которые представляются пользователям через компоненты пользовательского интерфейса, встроенные в платформу. Они отображаются с использованием тех же классов, которые вы уже используете в своих раскадровках, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения. Когда нативное объявление загружается, ваше приложение получает рекламный объект, содержащий его активы, и приложение (а не SDK) отвечает за их отображение. Это отличается от других форматов объявлений, которые не позволяют настраивать внешний вид объявления.

В этом руководстве показано, как использовать Google Mobile Ads SDK для реализациинативных объявленийв приложении iOS, а также некоторые важные моменты, которые следует учитывать при этом.

Вообще говоря, успешное внедрение нативной рекламы состоит из двух частей: загрузка рекламы через SDK и отображение рекламного контента в вашем приложении. На этой странице обсуждается загрузка рекламы с помощью SDK.

Если вы уже успешно загружаете нативную рекламу и вам просто нужно знать, как ее отображать, смело переходите к нашим руководствам по нативным шаблонам или расширенным нативным.

Предпосылки

Всегда тестируйте тестовые объявления

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

Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для всех нативных расширенных объявлений на iOS:

ca-app-pub-3940256099942544/3986624511

Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при написании кода, тестировании и отладке. Просто убедитесь, что вы заменили его собственным идентификатором рекламного блока, прежде чем публиковать свое приложение.

Дополнительные сведения о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .

Загрузка объявлений

Нативная реклама загружается через объекты GADAdLoader , которые отправляют сообщения своим делегатам в соответствии с протоколом GADAdLoaderDelegate .

Инициализировать загрузчик рекламы

Прежде чем вы сможете загрузить рекламу, вы должны инициализировать загрузчик рекламы. В следующем коде показано, как инициализировать GADAdLoader :

Быстрый

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Цель-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Вам понадобится идентификатор рекламного блока (вы можете использовать тестовый идентификатор), константы для передачи в массиве adTypes , чтобы указать, какие нативные форматы вы хотите запросить, и любые параметры, которые вы хотите установить в параметре options . Список возможных значений параметра options можно найти на странице Настройка параметров нативной рекламы .

Массив adTypes должен содержать эту константу:

Реализовать делегат загрузчика рекламы

Делегат загрузчика рекламы должен реализовывать протоколы, специфичные для вашего типа рекламы. Для нативных объявлений :

  • GADNativeAdLoaderDelegate Этот протокол включает сообщение, отправляемое делегату при загрузке нативного объявления:

    Быстрый

    public func adLoader(_ adLoader: GADAdLoader,
        didReceive nativeAd: GADNativeAd)
    

    Цель-C

    - (void)adLoader:(GADAdLoader *)adLoader
        didReceiveNativeAd:(GADNativeAd *)nativeAd;
    

Запросить объявление

После инициализации GADAdLoader вызовите его метод loadRequest: чтобы запросить рекламу:

Быстрый

adLoader.load(GADRequest())

Цель-C

[self.adLoader loadRequest:[GADRequest request]];

Метод loadRequest: в GADAdLoader принимает те же объекты GADRequest , что и баннеры и межстраничные объявления. Вы можете использовать объекты запроса для добавления информации о таргетинге , как и в случае с другими типами объявлений.

Когда запрашивать рекламу

Приложения, отображающие нативную рекламу, могут запросить их до того, как они будут фактически показаны. Во многих случаях это рекомендуемая практика. Например, приложение, отображающее список элементов с нативной рекламой, может загружать нативную рекламу для всего списка, зная, что некоторые из них будут показаны только после того, как пользователь прокрутит представление, а некоторые могут не отображаться вообще.

Хотя упреждающая загрузка объявлений — отличный метод, важно, чтобы вы не хранили старые объявления вечно, не показывая их. Любые нативные рекламные объекты, которые не отображались более часа, должны быть удалены и заменены новыми объявлениями из нового запроса.

Определение завершения загрузки

После того, как приложение вызывает loadRequest: , оно может получить результаты запроса через вызовы:

Запрос одного объявления приведет к одному вызову одного из этих методов.

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

Кроме того, GADAdLoaderDelegate предлагает обратный вызов adLoaderDidFinishLoading . Этот метод делегата указывает, что загрузчик объявлений завершил загрузку объявлений, и для запроса не будет сообщено о других объявлениях или ошибках. Вот пример того, как его использовать при одновременной загрузке нескольких нативных объявлений:

Быстрый

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdsOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdsOptions.numberOfAds = 5

    adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self,
        adTypes: [.native],
        options: [multipleAdsOptions])
    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
                didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
      // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Цель-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;

  self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:YOUR_AD_UNIT_ID
          rootViewController:self
                     adTypes:@[GADAdLoaderAdTypeNative]
                     options:@[multipleAdsOptions]];
  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
   // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

Обработка неудачных запросов

Вышеупомянутые протоколы расширяют протокол GADAdLoaderDelegate , который определяет сообщение, отправляемое, когда реклама не загружается.

Быстрый

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Цель-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

Получайте уведомления о событиях нативной рекламы

Чтобы получать уведомления о событиях, связанных с взаимодействием с нативной рекламой, установите свойство делегата нативной рекламы:

Быстрый

nativeAd.delegate = self

Цель-C

nativeAd.delegate = self;

Затем GADNativeAdDelegate , чтобы получать следующие вызовы делегатов:

Быстрый

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the application to become inactive and
  // open a new application.
}

Цель-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the application to become inactive and
  // open a new application.
}

Покажите свое объявление

После того, как вы загрузили объявление, все, что вам остается, — это показать его своим пользователям. Перейдите к нашему руководству Native Advanced, чтобы узнать, как это сделать.

,

Нативная реклама — это рекламные ресурсы, которые представляются пользователям через компоненты пользовательского интерфейса, встроенные в платформу. Они отображаются с использованием тех же классов, которые вы уже используете в своих раскадровках, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения. Когда нативное объявление загружается, ваше приложение получает рекламный объект, содержащий его активы, и приложение (а не SDK) отвечает за их отображение. Это отличается от других форматов объявлений, которые не позволяют настраивать внешний вид объявления.

В этом руководстве показано, как использовать Google Mobile Ads SDK для реализациинативных объявленийв приложении iOS, а также некоторые важные моменты, которые следует учитывать при этом.

Вообще говоря, успешное внедрение нативной рекламы состоит из двух частей: загрузка рекламы через SDK и отображение рекламного контента в вашем приложении. На этой странице обсуждается загрузка рекламы с помощью SDK.

Если вы уже успешно загружаете нативную рекламу и вам просто нужно знать, как ее отображать, смело переходите к нашим руководствам по нативным шаблонам или расширенным нативным.

Предпосылки

Всегда тестируйте тестовые объявления

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

Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для всех нативных расширенных объявлений на iOS:

ca-app-pub-3940256099942544/3986624511

Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете использовать его в своих собственных приложениях при написании кода, тестировании и отладке. Просто убедитесь, что вы заменили его собственным идентификатором рекламного блока, прежде чем публиковать свое приложение.

Дополнительные сведения о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .

Загрузка объявлений

Нативная реклама загружается через объекты GADAdLoader , которые отправляют сообщения своим делегатам в соответствии с протоколом GADAdLoaderDelegate .

Инициализировать загрузчик рекламы

Прежде чем вы сможете загрузить рекламу, вы должны инициализировать загрузчик рекламы. В следующем коде показано, как инициализировать GADAdLoader :

Быстрый

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Цель-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Вам понадобится идентификатор рекламного блока (вы можете использовать тестовый идентификатор), константы для передачи в массиве adTypes , чтобы указать, какие нативные форматы вы хотите запросить, и любые параметры, которые вы хотите установить в параметре options . Список возможных значений параметра options можно найти на странице Настройка параметров нативной рекламы .

Массив adTypes должен содержать эту константу:

Реализовать делегат загрузчика рекламы

Делегат загрузчика рекламы должен реализовывать протоколы, специфичные для вашего типа рекламы. Для нативных объявлений :

  • GADNativeAdLoaderDelegate Этот протокол включает сообщение, отправляемое делегату при загрузке нативного объявления:

    Быстрый

    public func adLoader(_ adLoader: GADAdLoader,
        didReceive nativeAd: GADNativeAd)
    

    Цель-C

    - (void)adLoader:(GADAdLoader *)adLoader
        didReceiveNativeAd:(GADNativeAd *)nativeAd;
    

Запросить объявление

После инициализации GADAdLoader вызовите его метод loadRequest: чтобы запросить рекламу:

Быстрый

adLoader.load(GADRequest())

Цель-C

[self.adLoader loadRequest:[GADRequest request]];

Метод loadRequest: в GADAdLoader принимает те же объекты GADRequest , что и баннеры и межстраничные объявления. Вы можете использовать объекты запроса для добавления информации о таргетинге , как и в случае с другими типами объявлений.

Когда запрашивать рекламу

Приложения, отображающие нативную рекламу, могут запросить их до того, как они будут фактически показаны. Во многих случаях это рекомендуемая практика. Например, приложение, отображающее список элементов с нативной рекламой, может загружать нативную рекламу для всего списка, зная, что некоторые из них будут показаны только после того, как пользователь прокрутит представление, а некоторые могут не отображаться вообще.

Хотя упреждающая загрузка объявлений — отличный метод, важно, чтобы вы не хранили старые объявления вечно, не показывая их. Любые нативные рекламные объекты, которые не отображались более часа, должны быть удалены и заменены новыми объявлениями из нового запроса.

Определение завершения загрузки

После того, как приложение вызывает loadRequest: , оно может получить результаты запроса через вызовы:

Запрос одного объявления приведет к одному вызову одного из этих методов.

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

Кроме того, GADAdLoaderDelegate предлагает обратный вызов adLoaderDidFinishLoading . Этот метод делегата указывает, что загрузчик объявлений завершил загрузку объявлений, и для запроса не будет сообщено о других объявлениях или ошибках. Вот пример того, как его использовать при одновременной загрузке нескольких нативных объявлений:

Быстрый

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdsOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdsOptions.numberOfAds = 5

    adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self,
        adTypes: [.native],
        options: [multipleAdsOptions])
    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
                didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
      // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Цель-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;

  self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:YOUR_AD_UNIT_ID
          rootViewController:self
                     adTypes:@[GADAdLoaderAdTypeNative]
                     options:@[multipleAdsOptions]];
  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
   // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

Обработка неудачных запросов

Вышеупомянутые протоколы расширяют протокол GADAdLoaderDelegate , который определяет сообщение, отправляемое, когда реклама не загружается.

Быстрый

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Цель-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

Получайте уведомления о событиях нативной рекламы

Чтобы получать уведомления о событиях, связанных с взаимодействием с нативной рекламой, установите свойство делегата нативной рекламы:

Быстрый

nativeAd.delegate = self

Цель-C

nativeAd.delegate = self;

Затем GADNativeAdDelegate , чтобы получать следующие вызовы делегатов:

Быстрый

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the application to become inactive and
  // open a new application.
}

Цель-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the application to become inactive and
  // open a new application.
}

Покажите свое объявление

После того, как вы загрузили объявление, все, что вам остается, — это показать его своим пользователям. Перейдите к нашему руководству Native Advanced, чтобы узнать, как это сделать.