Адаптивный баннер
Адаптивный баннер — это баннер, органично вписывающийся в размеры блока, определенные пользователем. В зависимости от способа интеграции адаптивного баннера, для него подбирается оптимальная высота с заданной шириной, либо используются указанные размеры рекламного места.
Про создание рекламного блока для адаптивного баннера можно прочитать в справке Рекламной сети.
Типы адаптивного баннера
- Альтернатива баннерам с размерами 320x50 (при определении высоты баннера сохраняется соотношение сторон 320x50).
- Фиксация баннера в верхней или нижней части экрана (настраивается в приложении).
- Использование заданной ширины баннера, а не ширины экрана устройства. Это позволяет учитывать особенности дисплея.
- Ширина адаптивного баннера задается с помощью метода +stickySizeWithContainerWidth:.
- Адаптивный баннер заполняет весь блок, используя заданную ширину и высоту.
- Ширина и высота адаптивного баннера задается с помощью метода +flexibleSizeWithCGSize:.
Особенности:
Примеры отображения адаптивного баннера:
Особенности:
Примеры отображения адаптивного баннера:
Подключение баннерной рекламы
Добавьте импорт:
import YandexMobileAds
#import <YandexMobileAds/YandexMobileAds.h>
Создайте @property, где будет храниться ссылка на баннер:
var adView: YMAAdView!
@property (nonatomic, strong) YMAAdView *adView;
- Укажите размер баннера и инициализируйте баннер в приложении.Баннер с заданной шириной
Чтобы задать ширину адаптивного баннера, вызовите метод +stickySizeWithContainerWidth:.
YMAAdSize adSize = [YMAAdSize stickySizeWithContainerWidth:width]; YMAAdView *adView = [[YMAAdView alloc] initWithAdUnitID:<AdUnitID> adSize:adSize]; adView.delegate = self;
Баннер с заданной шириной и высотойЧтобы задать ширину и высоту адаптивного баннера, вызовите метод +flexibleSizeWithCGSize:.
YMAAdSize adSize = [YMAAdSize flexibleSizeWithCGSize:size]; YMAAdView *adView = [[YMAAdView alloc] initWithAdUnitID:<AdUnitID> adSize:adSize]; adView.delegate = self;
AdUnitId
— уникальный идентификатор рекламного места, который выдается в Партнерском интерфейсе и имеет вид: R-M-XXXXXX-Y.При этом
self
должен удовлетворять протоколу YMAAdViewDelegate. В случае если делегат реализует метод -viewControllerForPresentingModalView, ссылки будут открываться во встроенном браузере внутри приложения. Иначе ссылки будут открываться в браузере, установленном на устройстве. Разместите баннер. Вы можете это сделать, например, с помощью
autolayout constraints
.Пример реализацииДобавьте баннер вUIView
. Затем добавьтеautolayout constraints
, чтобы баннер отображался в нужном месте.[self.view addSubview:self.adView]; self.adView.translatesAutoresizingMaskIntoConstraints = false; UIView *adView = self.adView; NSDictionary<NSString *, UIView *> *views = NSDictionaryOfVariableBindings(adView); NSArray<NSLayoutConstraint *> *horizontal = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[adView]|" options:0 metrics:nil views:views]; NSArray<NSLayoutConstraint *> *vertical = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[adView]-|" options:0 metrics:nil views:views]; [self.view addConstraints:horizontal]; [self.view addConstraints:vertical];
Загрузите баннер. Опционально, с помощью класса YMAAdRequest, можно передать данные для таргетирования.
Когда баннер загрузится, делегат получит об этом уведомление.
Пример работы с адаптивным баннером
Следующий код демонстрирует создание и настройку объекта AdView
, регистрацию слушателя, а также загрузку адаптивного баннера:
- (void)viewDidLoad
{
[super viewDidLoad];
// Задание ширины рекламы
YMAAdSize *adSize =
[YMAAdSize stickySizeWithContainerWidth:[self containerWidth]];
// Создание экземпляра adView
self.adView = [[YMAAdView alloc] initWithAdUnitID:@"R-M-XXXXX-YY" adSize:adSize];
self.adView.delegate = self;
[self addAdView];
// Загрузка рекламы
[self.adView loadAd];
}
- (void)addAdView
{
UIView *adView = self.adView;
adView.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary<NSString *, UIView *> *views = NSDictionaryOfVariableBindings(adView);
[self.view addSubview:adView];
NSArray<NSLayoutConstraint *> *horizontal =
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[adView]|"
options:0
metrics:nil
views:views];
NSArray<NSLayoutConstraint *> *vertical =
[NSLayoutConstraint constraintsWithVisualFormat:@"V:[adView]-|"
options:0
metrics:nil
views:views];
[self.view addConstraints:horizontal];
[self.view addConstraints:vertical];
}
- (CGFloat)containerWidth
{
CGFloat containerWidth = self.view.frame.size.width;
if (@available(iOS 11.0, *)) {
containerWidth =
UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets).size.width;
}
return containerWidth;
}