Как загрузить нативное объявление

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

Когда нативное объявление загружается, ваше приложение получает объект объявления, содержащий его объекты, и именно приложение, а не Google Mobile Ads SDK, отвечает за их показ.

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

В этой статье рассказывается, как загружать нативные объявления с помощью SDK.

Требования

Прежде чем продолжить, настройте Google Mobile Ads SDK.

Всегда тестируйте с помощью тестовых объявлений

При создании и тестировании приложений используйте тестовые объявления, а не реальные.

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

ca-app-pub-3940256099942544/3986624511

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

Подробнее Google Mobile Ads SDK о включении тестовых объявлений…

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

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

Инициализируйте загрузчик объявлений

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

Swift

adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  // To receive native ads, the ad loader's delegate must
  // conform to the NativeAdLoaderDelegate protocol.
  adTypes: [.native],
  // Use nil for default options.
  options: nil)
// Set the delegate before making an ad request.
adLoader.delegate = self

Замените nativeAdUnitID идентификатором рекламного блока.

Objective-C

self.adLoader =
    [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                       // The UIViewController parameter is optional.
                       rootViewController:self
                                  // To receive native ads, the ad loader's delegate must
                                  // conform to the NativeAdLoaderDelegate protocol.
                                  adTypes:@[ GADAdLoaderAdTypeNative ]
                                  // Use nil for default options.
                                  options:nil];
// Set the delegate before making an ad request.
self.adLoader.delegate = self;

Замените kNativeAdUnitID идентификатором рекламного блока.

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

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

Как реализовать делегата загрузчика объявлений

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

Swift

func adLoader(_ adLoader: AdLoader, didReceive nativeAd: NativeAd) {
  // Set the delegate to receive notifications for interactions with the native ad.
  nativeAd.delegate = self

  // TODO: Display the native ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // Set the delegate to receive notifications for interactions with the native ad.
  nativeAd.delegate = self;

  // TODO: Display the native ad.
}

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

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

Swift

adLoader.load(Request())

Objective-C

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

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

Загрузка нескольких объявлений (необязательно)

Чтобы загрузить несколько объявлений в одном запросе, задайте объект GADMultipleAdsAdLoaderOptions при инициализации GADAdLoader.

Swift

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5
adLoader = AdLoader(
  adUnitID: "nativeAdUnitID",
  // The UIViewController parameter is optional.
  rootViewController: self,
  adTypes: [.native],
  options: [multipleAdOptions])

Objective-C

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

self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:"kNativeAdUnitID"
                                   // The UIViewController parameter is optional.
                                   rootViewController:self
                                              adTypes:@[ GADAdLoaderAdTypeNative ]
                                              options:@[ multipleAdOptions ]];

Количество объявлений в запросе ограничено пятью, и нет гарантии, что SDK вернет именно столько объявлений, сколько было запрошено.

Все возвращенные объявления Google будут отличаться друг от друга, но уникальность объявлений из зарезервированного инвентаря или от сторонних покупателей не гарантируется.

Не используйте класс GADMultipleAdsAdLoaderOptions, если вы применяете медиацию, поскольку запросы нескольких нативных объявлений не работают с идентификаторами рекламных блоков, настроенных для медиации.

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

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

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

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

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

Swift

func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
  // The adLoader has finished loading ads.
}

Objective-C

- (void)adLoaderDidFinishLoading:(GADAdLoader *)adLoader {
  // The adLoader has finished loading ads.
}

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

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

Swift

func adLoader(_ adLoader: AdLoader, didFailToReceiveAdWithError error: any Error) {
  // The adLoader failed to receive an ad.
}

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(NSError *)error {
  // The adLoader failed to receive an ad.
}

Как получать уведомления о событиях, связанных с нативными объявлениями

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

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Затем реализуйте интерфейс GADNativeAdDelegate для получения следующих вызовов делегата:

Swift

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

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

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

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

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

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

Objective-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 app to become inactive and
  // open a new app.
}

Рекомендации

При загрузке объявлений соблюдайте следующие правила:

  • Приложения, в которых нативные объявления показываются в списках, должны предварительно кешировать эти списки.

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

  • Не вызывайте функцию loadRequest: на элементе GADAdLoader, пока не завершится загрузка предыдущего запроса, о чем свидетельствует значок adLoaderDidFinishLoading:.

  • Ограничьте кеширование нативных объявлений только необходимыми данными. Например, при предварительном кешировании кешируйте только те объявления, которые сразу видны на экране. Нативные объявления занимают много памяти, и их кеширование без удаления приводит к чрезмерному использованию памяти.

  • Удаляйте нативные объявления, когда они больше не используются.

Показ объявления

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