Native ads are ad assets that are presented to users through UI components that are native to the platform. They're shown using the same classes you already use in your storyboards, and can be formatted to match your app's visual design.
Когда загружается нативная реклама, ваше приложение получает объект рекламы, содержащий её ресурсы, и приложение, а не Google Mobile Ads SDK , затем отвечает за их отображение.
В общих чертах, успешная реализация нативной рекламы состоит из двух частей: загрузка рекламы с помощью SDK и последующее отображение рекламного контента в вашем приложении.
На этой странице показано, как использовать SDK для загрузки нативной рекламы .
Предварительные требования
Прежде чем продолжить, настройте Google Mobile Ads SDK .
Всегда проводите тестирование с помощью тестовых объявлений.
При разработке и тестировании приложений используйте тестовые объявления, а не рабочие, запущенные рекламные ролики.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для нативных объявлений на iOS:
ca-app-pub-3940256099942544/3986624511
It's been specially configured to return test ads for every request, and you can use it in your own apps while coding, testing, and debugging. Just make sure you replace it with your own ad unit ID before publishing your app.
Подробную информацию о тестовых объявлениях в Google Mobile Ads SDK см. в разделе «Включение тестовых объявлений» .
Загрузить рекламу
Нативная реклама загружается с помощью класса GADAdLoader , который отправляет сообщения своим делегатам в соответствии с протоколом GADAdLoaderDelegate .
Инициализация загрузчика рекламы.
Прежде чем загрузить рекламу, необходимо инициализировать загрузчик рекламы. Следующий код демонстрирует, как инициализировать GADAdLoader :
Быстрый
Замените nativeAdUnitID на идентификатор вашего рекламного блока.
Objective-C
Замените kNativeAdUnitID на идентификатор вашего рекламного блока.
You'll need an ad unit ID (you can use the test ID), constants to pass in the adTypes array to specify which native formats you want to request, and any options you want to set in the options parameter. The list of possible values for the options parameter can be found in the Setting Native Ad Options page .
Массив adTypes должен содержать следующую константу:
Реализуйте делегат загрузки рекламы.
The ad loader delegate needs to implement protocols specific to your ad type. For native ads, the GADNativeAdLoaderDelegate protocol includes a message that's sent to the delegate when a native ad has loaded.
Быстрый
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: для запроса рекламы:
Быстрый
adLoader.load(Request())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
The loadRequest: method in GADAdLoader accepts the same GADRequest objects as banners and interstitials. You can use request objects to add targeting information , just as you would with other ad types.
Загрузить несколько объявлений (необязательно)
Чтобы загрузить несколько объявлений в одном запросе, установите значение объекта GADMultipleAdsAdLoaderOptions при инициализации GADAdLoader .
Быстрый
Objective-C
Количество объявлений за один запрос ограничено пятью, и нет гарантии, что SDK вернет точное количество запрошенных объявлений.
Все объявления Google, полученные в результате поиска, будут отличаться друг от друга, хотя уникальность объявлений, полученных из зарезервированного инвентаря или от сторонних покупателей, не гарантируется.
Не используйте класс GADMultipleAdsAdLoaderOptions , если вы используете медиацию, поскольку запросы на показ нескольких нативных объявлений не работают для идентификаторов рекламных блоков, настроенных для медиации.
Определите момент завершения погрузки.
После вызова функции loadRequest: приложение может получить результаты запроса, используя следующие вызовы:
-
adLoader:didFailToReceiveAdWithError:вGADAdLoaderDelegate -
adLoader:didReceiveNativeAd:вGADNativeAdLoaderDelegate
Запрос на показ одного объявления приведет к одному обращению к одному из этих методов.
Запрос на показ нескольких объявлений приведет как минимум к одному вызову указанных выше методов, но не более чем к максимальному количеству запрошенных объявлений.
In addition, GADAdLoaderDelegate offers the adLoaderDidFinishLoading callback. This delegate method indicates that an ad loader has finished loading ads and no other ads or errors will be reported for the request. Here's an example of how to use it when loading several native ads at one time:
Быстрый
func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
// The adLoader has finished loading ads.
}
Objective-C
- (void)adLoaderDidFinishLoading:(GADAdLoader *)adLoader {
// The adLoader has finished loading ads.
}
Обработка неудачных запросов
Данные протоколы расширяют протокол GADAdLoaderDelegate , который определяет сообщение, отправляемое в случае неудачной загрузки рекламы.
Быстрый
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.
}
Получайте уведомления о событиях, связанных с нативной рекламой.
Чтобы получать уведомления о событиях, связанных с взаимодействием с нативной рекламой, установите свойство делегата для нативной рекламы:
Быстрый
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:.Limit native ad caching to only what is needed. For example when precaching, only cache the ads that are immediately visible on the screen. Native ads have a large memory footprint, and caching native ads without destroying them results in excessive memory use.
Удалять нативную рекламу, когда она больше не используется.
Показать свою рекламу
После загрузки рекламы остается только показать ее пользователям. Подробнее об этом читайте в нашем руководстве по расширенным функциям нативной рекламы .