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

Выберите платформу: Android (бета-версия)Новый 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;

Вам потребуется идентификатор рекламного блока (можно использовать идентификатор test), константы для передачи в массив adTypes , чтобы указать, какие нативные форматы вы хотите запросить, и любые параметры, которые вы хотите установить в параметре options . Список возможных значений для параметра 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 , что и баннеры и межстраничные объявления. Вы можете использовать объекты request для добавления информации о таргетинге , как и для других типов объявлений.

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

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

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

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

Показать свою рекламу

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