Нативные объявления – это объекты объявлений, которые показываются пользователям через компоненты интерфейса, нативные для платформы. Они показываются с помощью тех же классов, которые вы уже используете в раскадровках, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения.
Когда нативное объявление загружается, ваше приложение получает объект объявления, содержащий его объекты, и именно приложение, а не Google Mobile Ads SDK, отвечает за их показ.
В общем случае для успешной реализации нативных объявлений необходимо выполнить два действия: загрузить объявление с помощью SDK и затем показать содержание объявления в приложении.
В этой статье рассказывается, как загружать нативные объявления с помощью SDK.
Требования
Прежде чем продолжить, настройте Google Mobile Ads SDK.
Всегда используйте тестовые объявления
При создании и тестировании приложений используйте тестовые объявления, а не реальные.
Самый простой способ загрузить тестовые объявления – использовать специальный идентификатор тестового рекламного блока для нативных объявлений в iOS:
/21775744923/example/native
Он специально настроен так, чтобы возвращать тестовые объявления для каждого запроса. Вы можете использовать его в своих приложениях при написании кода, тестировании и отладке. Только не забудьте заменить его на свой идентификатор рекламного блока перед публикацией приложения.
Подробнее о тестовых объявлениях Google Mobile Ads SDK рассказывается в статье Как включить тестовые объявления.
Загрузка объявлений
Нативные объявления загружаются с помощью класса GADAdLoader, который отправляет сообщения своим делегатам в соответствии с протоколом GADAdLoaderDelegate.
Помимо системного нативного формата, вы можете создавать собственные специальные форматы нативных объявлений, которые можно использовать для нативных объявлений с прямыми продажами. Специальные форматы нативных объявлений позволяют передавать в приложение произвольные структурированные данные. Такие объявления представлены классом GADCustomNativeAd.
Инициализируйте загрузчик объявлений
Перед загрузкой объявления необходимо инициализировать загрузчик объявлений.
В приведенном ниже фрагменте кода показано, как инициализировать GADAdLoader:
Swift
Замените nativeAdUnitID идентификатором своего рекламного блока.
Objective-C
Замените 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.
}
Протокол GADCustomNativeAdLoaderDelegate включает сообщение, которое отправляется делегату после загрузки объявления на основе специального шаблона.
Swift
func adLoader(_ adLoader: AdLoader, didReceive customNativeAd: CustomNativeAd) {
// To be notified of events related to the custom native ad interactions, set the delegate
// property of the native ad
customNativeAd.delegate = self
// TODO: Display the custom native ad.
}
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveCustomNativeAd:(GADCustomNativeAd *)customNativeAd {
// To be notified of events related to the custom native ad interactions, set the delegate
// property of the native ad
customNativeAd.delegate = self;
// TODO: Display the custom native ad.
}
Запросить объявления
После инициализации объекта GADAdLoader вызовите его метод loadRequest:, чтобы запросить объявление:
Swift
adLoader.load(AdManagerRequest())
Objective-C
[self.adLoader loadRequest:[GAMRequest request]];
Метод loadRequest: в GADAdLoader принимает те же объекты GAMRequest, что и баннеры и межстраничные объявления. Объекты запросов можно использовать для добавления информации о таргетинге так же, как и в случае с другими типами объявлений.
Загрузка нескольких объявлений (необязательно)
Чтобы загрузить несколько объявлений в одном запросе, задайте объект GADMultipleAdsAdLoaderOptions при инициализации GADAdLoader.
Swift
Objective-C
Количество объявлений в запросе не может превышать пяти. При этом нет гарантии, что SDK вернет именно столько объявлений, сколько было запрошено.
Все возвращенные объявления Google будут отличаться друг от друга, однако уникальность объявлений из зарезервированного инвентаря или от сторонних покупателей не гарантируется.
Не используйте класс GADMultipleAdsAdLoaderOptions, если вы используете медиацию, поскольку запросы нескольких нативных объявлений не работают для идентификаторов рекламных блоков, настроенных для медиации.
Как определить, что загрузка завершена
После того как приложение вызовет метод loadRequest:, оно может получить результаты запроса, вызвав следующие методы:
adLoader:didFailToReceiveAdWithError:вGADAdLoaderDelegateadLoader:didReceiveNativeAd:вGADNativeAdLoaderDelegate
При запросе одного объявления будет выполнен один вызов одного из этих методов.
Запрос нескольких объявлений приведет как минимум к одному обратному вызову указанных выше методов, но не более максимального количества запрошенных объявлений.
Кроме того, в 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:.Кешируйте только необходимые нативные объявления. Например, при предварительном кешировании кешируйте только те объявления, которые сразу видны на экране. Нативные объявления занимают много памяти, и их кеширование без удаления приводит к чрезмерному использованию памяти.
Удаляйте нативные объявления, когда они больше не используются.
Показ объявления
После загрузки объявления остается только показать его пользователям. Подробнее о расширенных нативных объявлениях и полноэкранных нативных объявлениях…