Баннерная реклама
Это архивная версия документации. Актуальная документация по всем платформам находится здесь.
Баннер — настраиваемое объявление, которое занимает часть экрана и реагирует на нажатие.
Типы баннера
Особенности:
- Используется заданная ширина баннера. Высота подбирается автоматически.
- Ширина баннера задается с помощью метода +stickySizeWithContainerWidth:.
- Высота баннера не должна превышать 15% высоты устройства и не должна быть меньше 50 dp.
Примеры отображения баннера:
Особенности:
- Баннер заполняет весь блок, используя заданные максимальные размеры.
- Ширина и высота баннера задается с помощью метода +flexibleSizeWithCGSize:.
- SDK накладывает
NSLayoutConstraint
на высоту баннера.
Примеры отображения баннера:
Подключение баннера
Чтобы подключить баннер:
Добавьте импорт:
import YandexMobileAds
#import <YandexMobileAds/YandexMobileAds.h>
Создайте @property, где будет храниться ссылка на баннер:
var adView: YMAAdView!
@property (nonatomic, strong) YMAAdView *adView;
- Создайте баннер:
Чтобы задать ширину баннера, вызовите метод +stickySizeWithContainerWidth:.
let adSize = YMAAdSize.stickySize(withContainerWidth: width) let adView = YMAAdView(adUnitID: "", adSize: adSize) adView.delegate = self
YMAAdSize adSize = [YMAAdSize stickySizeWithContainerWidth:width]; YMAAdView *adView = [[YMAAdView alloc] initWithAdUnitID:<AdUnitID> adSize:adSize]; adView.delegate = self;
Чтобы задать ширину и высоту баннера, вызовите метод +flexibleSizeWithCGSize:.
let adSize = YMAAdSize.flexibleSize(with: size) let adView = YMAAdView(adUnitID: "", adSize: adSize) adView.delegate = self
YMAAdSize adSize = [YMAAdSize flexibleSizeWithCGSize:size]; YMAAdView *adView = [[YMAAdView alloc] initWithAdUnitID:<AdUnitID> adSize:adSize]; adView.delegate = self;
Ограничение. Требования к размерам баннера при отображении видеорекламыМинимальный размер баннера, в котором поддерживается воспроизведение видео: 300x160 или 160x300.
AdUnitId
— уникальный идентификатор рекламного места, который выдается в Партнерском интерфейсе и имеет вид: R-M-XXXXXX-Y.При этом
self
должен удовлетворять протоколу YMAAdViewDelegate. В случае если делегат реализует метод -viewControllerForPresentingModalView, ссылки будут открываться во встроенном браузере внутри приложения. Иначе ссылки будут открываться в браузере, установленном на устройстве.Чтобы определить причины, по которым реклама работает некорректно, используйте метод -adViewDidFailLoading:error:.
Описание ошибок доступно в разделе YMAAdErrorCode.
Разместите баннер. Вы можете разместить баннер двумя способами:
С помощью
autolayout constraints
.Добавьте баннер вUIView
. Затем добавьтеautolayout constraints
, чтобы баннер отображался в нужном месте.view.addSubview(adView) adView.translatesAutoresizingMaskIntoConstraints = false var adViewConstraints = [ adView.leadingAnchor.constraint(equalTo: adView.superview!.leadingAnchor), adView.trailingAnchor.constraint(equalTo: adView.superview!.trailingAnchor) ] let bottomDistance: CGFloat = 8 if #available(iOS 11.0, *) { adViewConstraints.append( adView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: bottomDistance) ) } else { adViewConstraints.append( adView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: bottomDistance) ) } NSLayoutConstraint.activate(adViewConstraints)
UIView *adView = self.adView; [self.view addSubview:adView]; adView.translatesAutoresizingMaskIntoConstraints = NO; NSMutableArray *adViewConstraints = [NSMutableArray arrayWithArray:@[ [adView.leadingAnchor constraintEqualToAnchor:adView.superview.leadingAnchor], [adView.trailingAnchor constraintEqualToAnchor:adView.superview.trailingAnchor] ]]; int bottomDistance = 8; if (@available(iOS 11.0, *)) { UILayoutGuide *guide = self.view.safeAreaLayoutGuide; [adViewConstraints addObject:[adView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor constant:bottomDistance]]; } else { [adViewConstraints addObject:[adView.bottomAnchor constraintEqualToAnchor:adView.superview.bottomAnchor constant:bottomDistance]]; } [NSLayoutConstraint activateConstraints:adViewConstraints];
- С помощью следующих методов:
В обоих случаях баннеры центрируются по горизонтали.
Загрузите баннер методом -loadAdWithRequest:.
С помощью класса YMAAdRequest передайте код, полученный в интерфейсе 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 request = YMAMutableAdRequest() request.age = age request.contextQuery = contextQuery request.contextTags = contextTags request.gender = gender request.location = location request.parameters = parameters adView.loadAd(with: adRequest)
// Код из интерфейса 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>"; YMAMutableAdRequest *request = [[YMAMutableAdRequest alloc] init]; request.age = age; request.contextQuery = contextQuery; request.contextTags = contextTags; request.gender = gender; request.location = location; request.parameters = parameters; [self.adView loadAdWithRequest:adRequest];
Опционально можно включить логирование с помощью метода +enableLogging. Если показ рекламы не был засчитан, в консоли появится сообщение.
Опционально можно настроить получение уведомлений об окончании проигрывания видео в баннерной рекламе.
Пример реализации// Получение экземпляра YMAVideoController с помощью videoController. let videoController = adView.videoController // Установка делегата, который реализует протокол YMAVideoDelegate. videoController.delegate = self // Реализация метода протокола YMAVideoDelegate. // MARK: - YMAVideoDelegate func videoControllerDidFinishPlayingVideo(_ videoController: YMAVideoController) { print("Video complete"); }
// Получение экземпляра YMAVideoController с помощью videoController. YMAVideoController *videoController = self.adView.videoController; // Установка делегата, который реализует протокол YMAVideoDelegate. videoController.delegate = self; // Реализация метода протокола YMAVideoDelegate. #pragma mark - YMAVideoDelegate - (void)videoControllerDidFinishPlayingVideo:(YMAVideoController *)videoController { NSLog(@"%@", @"Video complete"); }