Загрузка рекламы
Это архивная версия документации. Актуальная документация по всем платформам находится здесь.
Загрузка рекламных объявлений
Создайте экземпляр класса YMANativeAdLoader для получения нативных объявлений.
Создайте конфигурацию запроса
nativeAdRequestConfiguration
с помощью класса YMANativeAdRequestConfiguration. В качестве параметров запроса можно передать идентификатор рекламного блока, способ загрузки изображений, возраст, гендерные признаки и другие данные, способные улучшить качество подбора рекламы.Установите делегат для получения рекламы, который реализует протокол YMANativeAdLoaderDelegate.
Чтобы отслеживать процесс загрузки рекламы, реализуйте методы протокола YMANativeAdLoaderDelegate: -nativeAdLoader:didFailLoadingWithError:, -nativeAdLoader:didLoadAd:.
Отправьте загрузчику сообщение
loadAdWithRequestConfiguration:
, чтобы загрузить рекламу.С помощью класса YMAMutableNativeAdRequestConfiguration передайте код, полученный в интерфейсе Adfox (подробнее смотрите в помощи по Adfox).// Код из интерфейса Adfox для работы с прямыми кампаниями. var parameters = [String: String]() parameters["adf_ownerid"] = "<example>" parameters["adf_p1"] = "<example>" parameters["adf_p2"] = "<example>" parameters["adf_pfc"] = "<example>" parameters["adf_pfb"] = "<example>" parameters["adf_pt"] = "<example>" parameters["adf_pd"] = "<example>" parameters["adf_pw"] = "<example>" parameters["adf_pv"] = "<example>" parameters["adf_prr"] = "<example>" parameters["adf_pdw"] = "<example>" parameters["adf_pdh"] = "<example>" let requestConfiguration = YMAMutableNativeAdRequestConfiguration(adUnitID: "R-M-XXXXXX") requestConfiguration.age = age requestConfiguration.contextQuery = contextQuery requestConfiguration.contextTags = contextTags requestConfiguration.gender = gender requestConfiguration.location = location requestConfiguration.parameters = parameters adLoader.loadAd(with: requestConfiguration)
// Код из интерфейса Adfox для работы с прямыми кампаниями. NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; parameters[@"adf_ownerid"] = @"<example>"; parameters[@"adf_p1"] = @"<example>"; parameters[@"adf_p2"] = @"<example>"; parameters[@"adf_pfc"] = @"<example>"; parameters[@"adf_pfb"] = @"<example>"; parameters[@"adf_pt"] = @"<example>"; parameters[@"adf_pd"] = @"<example>"; parameters[@"adf_pw"] = @"<example>"; parameters[@"adf_pv"] = @"<example>"; parameters[@"adf_prr"] = @"<example>"; parameters[@"adf_pdw"] = @"<example>"; parameters[@"adf_pdh"] = @"<example>"; YMAMutableNativeAdRequestConfiguration *requestConfiguration = [[YMAMutableNativeAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXXX"]; requestConfiguration.age = age; requestConfiguration.contextQuery = contextQuery; requestConfiguration.contextTags = contextTags; requestConfiguration.gender = gender; requestConfiguration.location = location; requestConfiguration.parameters = parameters; [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.
- Опционально, с помощью свойства
(nonatomic, copy, readonly) NSString *info
протокола YMANativeAd можно получить строку, которая была задана в интерфейсе Adfox, в поле Дополнительный текст.
Примеры с демонстрационным AdUnitID
- для рекламы типа App Install — demo-native-app-yandex
- для рекламы типа Content — demo-native-content-yandex
- для рекламы типа Image — R-M-187883-1. Также необходимо передать список параметров:
// Код из интерфейса Adfox для работы с прямыми кампаниями. parameters["adf_ownerid"] = "168627" parameters["adf_p1"] = "bvyhu" parameters["adf_p2"] = "fksh" parameters["adf_pt"] = "b"
// Код из интерфейса Adfox для работы с прямыми кампаниями. parameters[@"adf_ownerid"] = @"168627"; parameters[@"adf_p1"] = @"bvyhu"; parameters[@"adf_p2"] = @"fksh"; parameters[@"adf_pt"] = @"b";
Загрузка нескольких рекламных объявлений
Yandex Mobile Ads SDK предоставляет возможность загрузки нескольких рекламных объявлений одним запросом (до девяти объявлений).
Создайте экземпляр класса YMANativeBulkAdLoader для получения нативных объявлений.
Создайте конфигурацию запроса
nativeAdRequestConfiguration
с помощью класса YMANativeAdRequestConfiguration. В качестве параметров запроса можно передать идентификатор рекламного блока, способ загрузки изображений, возраст, гендерные признаки и другие данные, способные улучшить качество подбора рекламы.Установите делегат для получения рекламы, который реализует протокол YMANativeBulkAdLoaderDelegate.
Чтобы отслеживать процесс загрузки рекламы, реализуйте методы протокола YMANativeBulkAdLoaderDelegate: -nativeBulkAdLoader:didLoadAds:, -nativeBulkAdLoader:didFailLoadingWithError:.
Отправьте загрузчику конфигурацию запроса и количество запрашиваемых объявлений (параметр
adsCount
).С помощью класса YMAMutableNativeAdRequestConfiguration передайте код, полученный в интерфейсе Adfox (подробнее смотрите в помощи по Adfox).// Код из интерфейса Adfox для работы с прямыми кампаниями. var parameters = [String: String]() parameters["adf_ownerid"] = "<example>" parameters["adf_p1"] = "<example>" parameters["adf_p2"] = "<example>" parameters["adf_pfc"] = "<example>" parameters["adf_pfb"] = "<example>" parameters["adf_pt"] = "<example>" parameters["adf_pd"] = "<example>" parameters["adf_pw"] = "<example>" parameters["adf_pv"] = "<example>" parameters["adf_prr"] = "<example>" parameters["adf_pdw"] = "<example>" parameters["adf_pdh"] = "<example>" let requestConfiguration = YMAMutableNativeAdRequestConfiguration(adUnitID: "R-M-XXXXXX") requestConfiguration.age = age requestConfiguration.contextQuery = contextQuery requestConfiguration.contextTags = contextTags requestConfiguration.gender = gender requestConfiguration.location = location requestConfiguration.parameters = parameters adLoader.loadAds(with: requestConfiguration, adsCount: adsCount)
// Код из интерфейса Adfox для работы с прямыми кампаниями. NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; parameters[@"adf_ownerid"] = @"<example>"; parameters[@"adf_p1"] = @"<example>"; parameters[@"adf_p2"] = @"<example>"; parameters[@"adf_pfc"] = @"<example>"; parameters[@"adf_pfb"] = @"<example>"; parameters[@"adf_pt"] = @"<example>"; parameters[@"adf_pd"] = @"<example>"; parameters[@"adf_pw"] = @"<example>"; parameters[@"adf_pv"] = @"<example>"; parameters[@"adf_prr"] = @"<example>"; parameters[@"adf_pdw"] = @"<example>"; parameters[@"adf_pdh"] = @"<example>"; YMAMutableNativeAdRequestConfiguration *requestConfiguration = [[YMAMutableNativeAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXXX"]; requestConfiguration.age = age; requestConfiguration.contextQuery = contextQuery; requestConfiguration.contextTags = contextTags; requestConfiguration.gender = gender; requestConfiguration.location = location; requestConfiguration.parameters = parameters; [adLoader loadAdWithRequestConfiguration:requestConfiguration adsCount:adsCount];
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];