Нативная реклама

Выберите платформу: Android iOS Flutter Unity

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

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

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

На этой странице показано, как использовать SDK для загрузки нативной рекламы .

Предпосылки

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

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

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

ca-app-pub-3940256099942544/3986624511

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

Дополнительную информацию о работе тестовых объявлений Google Mobile Ads SDK см. в разделе Тестовые объявления .

Загрузить рекламу

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

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

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

Быстрый

adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

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

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

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

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

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

Быстрый

public func adLoader(_ adLoader: AdLoader,
            didReceive nativeAd: NativeAd)

Objective-C

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

Запросить рекламу

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

Быстрый

adLoader.load(Request())

Objective-C

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

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

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

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

Быстрый

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

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

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

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

Определение окончания загрузки

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

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

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

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

Быстрый

class ViewController: UIViewController, NativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = MultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(Request())
  }

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

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

}

Objective-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:@"ca-app-pub-3940256099942544/3986624511"
      // The UIViewController parameter is nullable.
      rootViewController:rootViewController
                 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: AdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

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

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

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

Быстрый

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

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

Быстрый

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: .

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

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

Покажите свою рекламу

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