Загрузка рекламы
Это архивная версия документации. Актуальная документация по всем платформам находится здесь.
Загрузка рекламных объявлений
Создайте экземпляр класса YMANativeAdLoader для получения нативных объявлений.
Создайте конфигурацию запроса
nativeAdRequestConfiguration
с помощью класса YMANativeAdRequestConfiguration. В качестве параметров запроса можно передать идентификатор рекламного блока, способ загрузки изображений, возраст, гендерные признаки и другие данные, способные улучшить качество подбора рекламы.Установите делегат для получения рекламы, который реализует протокол YMANativeAdLoaderDelegate.
Чтобы отслеживать процесс загрузки рекламы, реализуйте методы протокола YMANativeAdLoaderDelegate: -nativeAdLoader:didFailLoadingWithError:, -nativeAdLoader:didLoadAd:.
Отправьте загрузчику сообщение
loadAdWithRequestConfiguration:
, чтобы загрузить рекламу.adLoader.loadAd(with: requestConfiguration)
[self.adLoader loadAdWithRequestConfiguration:requestConfiguration];
Если реклама загрузилась, будет вызван метод:
func nativeAdLoader(_ loader: YMANativeAdLoader, didLoad ad: YMANativeAd)
- (void)nativeAdLoader:(YMANativeAdLoader *)loader didLoadAd:(id<YMANativeAd>)ad
Если реклама не загрузилась, будет вызван следующий метод:
func nativeAdLoader(_ loader: YMANativeAdLoader, didFailLoadingWithError error: Error)
- (void)nativeAdLoader:(YMANativeAdLoader *)loader didFailLoadingWithError:(NSError *)error
Подробно о возможных ошибках см. раздел YMANativeErrorCode.
- Общий запрос за рекламой
-
// Создание загрузчика adLoader = YMANativeAdLoader() adLoader.delegate = self // Создание конфигурации запроса let requestConfiguration = YMANativeAdRequestConfiguration(adUnitID: "<AdUnitID>") // Передача загрузчику конфигурации запроса adLoader.loadAd(with: requestConfiguration) // Реализация методов делегата .... func nativeAdLoader(_ loader: YMANativeAdLoader, didLoad ad: YMANativeAd) { // Отобразите рекламу }
// Создание загрузчика self.adLoader = [[YMANativeAdLoader alloc] init]; self.adLoader.delegate = self; // Создание конфигурации запроса YMANativeAdRequestConfiguration *requestConfiguration = [[YMANativeAdRequestConfiguration alloc] initWithAdUnitID:@"your_AdUnitID"]; // Передача загрузчику конфигурации запроса [self.adLoader loadAdWithRequestConfiguration:requestConfiguration]; // Реализация методов делегата .... - (void)nativeAdLoader:(YMANativeAdLoader *)loader didLoadAd:(id<YMANativeAd>)ad { // Отобразите рекламу }
Примеры с демонстрационным AdUnitID
- для рекламы типа App Install — demo-native-app-yandex;
- для рекламы типа Content — demo-native-content-yandex;
- для рекламы с видео — demo-native-video-yandex.
Загрузка нескольких рекламных объявлений
Yandex Mobile Ads SDK предоставляет возможность загрузки нескольких рекламных объявлений одним запросом (до девяти объявлений).
Создайте экземпляр класса YMANativeBulkAdLoader для получения нативных объявлений.
Создайте конфигурацию запроса
nativeAdRequestConfiguration
с помощью класса YMANativeAdRequestConfiguration. В качестве параметров запроса можно передать идентификатор рекламного блока, способ загрузки изображений, возраст, гендерные признаки и другие данные, способные улучшить качество подбора рекламы.Установите делегат для получения рекламы, который реализует протокол YMANativeBulkAdLoaderDelegate.
Чтобы отслеживать процесс загрузки рекламы, реализуйте методы протокола YMANativeBulkAdLoaderDelegate: -nativeBulkAdLoader:didLoadAds:, -nativeBulkAdLoader:didFailLoadingWithError:.
Отправьте загрузчику конфигурацию запроса и количество запрашиваемых объявлений (параметр
adsCount
).adLoader.loadAds(with: requestConfiguration, adsCount: adsCount)
[self.adLoader loadAdsWithRequestConfiguration:requestConfiguration adsCount:adsCount];
// Создание конфигурации запроса
let requestConfiguration = YMAMutableNativeAdRequestConfiguration(adUnitID: AdUnitID)
// Создание загрузчика
adLoader = YMANativeBulkAdLoader()
adLoader.delegate = self
// Передача загрузчику конфигурации запроса и количество запрашиваемых рекламных объявлений
adLoader.loadAds(with: requestConfiguration, adsCount: adsCount)
// Реализация методов делегата
func nativeBulkAdLoader(_ nativeBulkAdLoader: YMANativeBulkAdLoader, didLoad ads: [YMANativeAd]) {
...
// Отдельная работа с каждым объектом id<YMANativeAd>. Подробности в разделе "Настройка внешнего оформления рекламы".
}
// Создание конфигурации запроса
YMAMNativeAdRequestConfiguration *requestConfiguration =
[[YMANativeAdRequestConfiguration alloc] initWithAdUnitID:AdUnitID];
// Создание загрузчика
self.adLoader = [[YMANativeBulkAdLoader alloc] init];
self.adLoader.delegate = self;
// Передача загрузчику конфигурации запроса и количество запрашиваемых рекламных объявлений
[self.adLoader loadAdsWithRequestConfiguration:requestConfiguration adsCount:adsCount];
// Реализация методов делегата
- (void)nativeBulkAdLoader:(YMANativeBulkAdLoader *)nativeBulkAdLoader didLoadAds:(NSArray<id<YMANativeAd>> *)ads
{
...
// Отдельная работа с каждым объектом id<YMANativeAd>. Подробности в разделе "Настройка внешнего оформления рекламы".
}
Yandex Mobile Ads SDK не гарантирует, что будет загружено запрошенное количество объявлений. Полученный массив будет содержать от 0 до adsCount объектов NativeAd. Все полученные объекты рекламы можно показывать отдельно друг от друга, используя описанные выше способы внешнего оформления нативных объявлений.
Способы загрузки изображений
Если приложение одновременно хранит ссылки на одно или небольшое количество объявлений, рекомендуется использовать автоматическую загрузку.
Передайте YES
в качестве значения свойства shouldLoadImagesAutomatically при создании конфигурации:
let requestConfiguration = YMAMutableNativeAdRequestConfiguration(adUnitID: AdUnitID)
requestConfiguration.shouldLoadImagesAutomatically = true
YMAMutableNativeAdRequestConfiguration *requestConfiguration =
[[YMAMutableNativeAdRequestConfiguration alloc] initWithAdUnitID:AdUnitID];
requestConfiguration.shouldLoadImagesAutomatically = YES;
В полученном объявлении будут присутствовать готовые изображения. Они хранятся в памяти приложения до уничтожения объявления.
Если приложение одновременно хранит ссылки на большое количество объявлений, рекомендуется использовать ручную загрузку изображений.
Передайте NO
в качестве значения свойства shouldLoadImagesAutomatically при создании конфигурации:
let requestConfiguration = YMAMutableNativeAdRequestConfiguration(adUnitID: AdUnitID)
requestConfiguration.shouldLoadImagesAutomatically = false
YMAMutableNativeAdRequestConfiguration *requestConfiguration =
[[YMAMutableNativeAdRequestConfiguration alloc] initWithAdUnitID:AdUnitID];
requestConfiguration.shouldLoadImagesAutomatically = NO;
В полученном объявлении будут присутствовать только размеры изображений. Чтобы загрузить сами изображения, вызовите метод loadImages у полученного объявления.
func showAd() {
// Show ad: custom native view or template
view.addSubview(adView)
adView.ad?.loadImages()
}
- (void)showAd
{
// Show ad: custom native view or template
[self.view addSubview:self.adView];
[self.adView.ad loadImages];
}
Уведомления о процессе загрузки изображений
Чтобы включить уведомления о завершении загрузки изображений, вызовите метод -addImageLoadingObserver:
ad?.add(self)
...
func nativeAdDidFinishLoadingImages(_ ad: YMANativeAd) {
print("Finished loading images")
}
[ad addImageLoadingObserver:self];
...
- (void)nativeAdDidFinishLoadingImages:(id<YMANativeAd>)ad
{
NSLog(@"Finished loading images");
}
ad?.remove(self)
[ad removeImageLoadingObserver:self];