Нативные объявления – это объекты объявлений, которые показываются пользователям через компоненты интерфейса, нативные для платформы. Они показываются с помощью тех же классов, которые вы уже используете в раскадровках, и их можно оформить в соответствии с визуальным дизайном вашего приложения.
При загрузке нативного объявления приложение получает объект объявления, содержащий его объекты, и за их показ отвечает приложение, а не Google Mobile Ads SDK.
В целом успешное внедрение нативных объявлений состоит из двух частей: загрузки объявления с помощью SDK и последующего показа содержания объявления в приложении.
В этой статье рассказывается, как использовать SDK для загрузки нативных объявлений.
Требования
Прежде чем продолжить, настройте Google Mobile Ads SDK.
Всегда используйте тестовые объявления
При создании и тестировании приложений используйте тестовые объявления, а не реальные.
Проще всего загрузить тестовые объявления, используя идентификатор тестового рекламного блока для нативных объявлений на iOS:
ca-app-pub-3940256099942544/3986624511
Он специально настроен на то, чтобы возвращать тестовые объявления для каждого запроса, и вы можете использовать его в своих приложениях при написании кода, тестировании и отладке. Только не забудьте заменить его на свой идентификатор рекламного блока перед публикацией приложения.
Подробнее Google Mobile Ads SDK о включении тестовых объявлений…
Загрузка объявлений
Нативные объявления загружаются с помощью класса GADAdLoader, который отправляет сообщения своим делегатам в соответствии с протоколом GADAdLoaderDelegate.
Инициализируйте загрузчик объявлений
Прежде чем загрузить объявление, необходимо инициализировать загрузчик объявлений.
В следующем примере кода показано, как инициализировать 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.
}
Запросить объявления
После инициализации объекта GADAdLoader вызовите его метод loadRequest:, чтобы запросить объявление:
Swift
adLoader.load(Request())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
Метод loadRequest: в GADAdLoader принимает те же объекты GADRequest, что и баннеры и межстраничные объявления. Объекты запросов можно использовать для добавления информации о таргетинге, как и в случае с другими типами объявлений.
Загрузка нескольких объявлений (необязательно)
Чтобы загрузить несколько объявлений в одном запросе, задайте объект 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:.Кешируйте только необходимые нативные объявления. Например, при предварительном кешировании кешируйте только те объявления, которые сразу видны на экране. Нативные объявления занимают много памяти, и их кеширование без удаления приводит к чрезмерному использованию памяти.
Удаляйте нативные объявления, когда они больше не используются.
Показ объявления
После загрузки объявления остается только показать его пользователям. Подробнее о расширенных нативных объявлениях и полноэкранных нативных объявлениях…