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

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

Когда нативное объявление загружается, ваше приложение получает объект объявления, содержащий его объекты, и именно приложение, а не 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:.

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

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

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

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