Рекламные баннеры — это прямоугольные объявления, которые занимают часть макета приложения. Они остаются на экране, пока пользователи взаимодействуют с приложением, либо закреплены вверху или внизу экрана, либо встроены в контент, когда пользователь прокручивает страницу. Рекламные баннеры могут автоматически обновляться через определенный промежуток времени. Для получения дополнительной информации см. Обзор рекламных баннеров .
В этом руководстве показано, как начать работу с привязанными адаптивными баннерными объявлениями , которые повышают эффективность за счет оптимизации размера рекламы для каждого устройства с использованием указанной вами ширины объявления.
Закрепленный адаптивный баннер
Закрепленные адаптивные баннерные объявления — это объявления с фиксированным соотношением сторон, а не обычные объявления с фиксированным размером. Соотношение сторон аналогично отраслевому стандарту 320x50. После указания полной доступной ширины возвращается объявление с оптимальной высотой для этой ширины. Оптимальная высота не меняется между запросами с одного и того же устройства, и окружающие представления не должны перемещаться при обновлении объявления.
Предпосылки
- Заполните руководство по началу работы .
Всегда проводите тестирование с помощью тестовых объявлений
При создании и тестировании приложений убедитесь, что вы используете тестовые объявления, а не живые, производственные объявления. Невыполнение этого требования может привести к блокировке вашего аккаунта.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для баннеров iOS:
ca-app-pub-3940256099942544/2435281174
Он был специально настроен для возврата тестовых объявлений для каждого запроса, и вы можете свободно использовать его в своих приложениях при кодировании, тестировании и отладке. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Дополнительную информацию о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .
Создать GADBannerView
Баннерная реклама отображается в объектах GADBannerView
, поэтому первым шагом к интеграции баннерной рекламы является включение GADBannerView
в иерархию представлений. Обычно это делается либо программно, либо через Interface Builder.
Программно
GADBannerView
также может быть создан напрямую. Следующий пример создает GADBannerView
:
Быстрый
// Initialize the BannerView.
bannerView = BannerView()
bannerView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(bannerView)
// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
NSLayoutConstraint.activate([
// Align the banner's bottom edge with the safe area's bottom edge
bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
// Center the banner horizontally in the view
bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
])
SwiftUI
Чтобы использовать BannerView
, создайте UIViewRepresentable
:
private struct BannerViewContainer: UIViewRepresentable {
typealias UIViewType = BannerView
let adSize: AdSize
init(_ adSize: AdSize) {
self.adSize = adSize
}
func makeUIView(context: Context) -> BannerView {
let banner = BannerView(adSize: adSize)
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())
banner.delegate = context.coordinator
return banner
}
func updateUIView(_ uiView: BannerView, context: Context) {}
func makeCoordinator() -> BannerCoordinator {
return BannerCoordinator(self)
}
Добавьте свой UIViewRepresentable
в иерархию представлений, указав значения height
и width
:
var body: some View {
Spacer()
// Request an anchored adaptive banner with a width of 375.
let adSize = currentOrientationAnchoredAdaptiveBanner(width: 375)
BannerViewContainer(adSize)
.frame(width: adSize.size.width, height: adSize.size.height)
}
Objective-C
// Initialize the GADBannerView.
self.bannerView = [[GADBannerView alloc] init];
self.bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:self.bannerView];
// This example doesn't give width or height constraints, as the ad size gives the banner an
// intrinsic content size to size the view.
[NSLayoutConstraint activateConstraints:@[
// Align the banner's bottom edge with the safe area's bottom edge
[self.bannerView.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor],
// Center the banner horizontally in the view
[self.bannerView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
]];
Конструктор интерфейсов
Вы можете добавить GADBannerView
в файл раскадровки или xib. При использовании этого метода обязательно добавляйте ограничения положения только на баннер. Например, при отображении адаптивного баннера в нижней части экрана установите нижнюю часть представления баннера равной верхней части Bottom Layout Guide и установите ограничение centerX
равным centerX
суперпредставления.
Размер рекламного баннера по-прежнему задается программно:
Быстрый
// Request an anchored adaptive banner with a width of 375.
bannerView.adSize = currentOrientationAnchoredAdaptiveBanner(width: 375)
Objective-C
// Request an anchored adaptive banner with a width of 375.
self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(375);
Загрузить объявление
После того, как GADBannerView
установлен и его свойства, такие как adUnitID
, настроены, пора загрузить рекламу. Это делается путем вызова loadRequest:
на объекте GADRequest
:
Быстрый
bannerView.load(Request())
SwiftUI
banner.adUnitID = "ca-app-pub-3940256099942544/2435281174"
banner.load(Request())
Objective-C
[self.bannerView loadRequest:[GADRequest request]];
Объекты GADRequest
представляют собой один рекламный запрос и содержат свойства для таких вещей, как информация о таргетинге.
Обновить объявление
Если вы настроили обновление рекламного блока, вам не нужно запрашивать другое объявление, если объявление не загружается. Google Mobile Ads SDK учитывает любую частоту обновления, указанную вами в пользовательском интерфейсе AdMob. Если вы не включили обновление, отправьте новый запрос. Для получения дополнительных сведений об обновлении рекламного блока, например, о настройке частоты обновления, см. раздел Использование автоматического обновления для баннерной рекламы .
Рекламные мероприятия
Используя GADBannerViewDelegate
, вы можете прослушивать события жизненного цикла, например, когда реклама закрывается или пользователь покидает приложение.
Зарегистрируйтесь на баннерные мероприятия
Чтобы зарегистрироваться для событий баннерной рекламы, установите свойство delegate
в GADBannerView
на объект, который реализует протокол GADBannerViewDelegate
. Обычно класс, который реализует баннерную рекламу, также действует как класс делегата, и в этом случае свойство delegate
может быть установлено на self
.
Быстрый
bannerView.delegate = self
SwiftUI
banner.delegate = context.coordinator
Objective-C
self.bannerView.delegate = self;
Реализуйте баннерные мероприятия
Каждый из методов в GADBannerViewDelegate
помечен как необязательный, поэтому вам нужно реализовать только те методы, которые вы хотите. Этот пример реализует каждый метод и выводит сообщение на консоль:
Быстрый
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
print(#function)
}
func bannerView(_ bannerView: BannerView, didFailToReceiveAdWithError error: Error) {
print(#function + ": " + error.localizedDescription)
}
func bannerViewDidRecordClick(_ bannerView: BannerView) {
print(#function)
}
func bannerViewDidRecordImpression(_ bannerView: BannerView) {
print(#function)
}
func bannerViewWillPresentScreen(_ bannerView: BannerView) {
print(#function)
}
func bannerViewWillDismissScreen(_ bannerView: BannerView) {
print(#function)
}
func bannerViewDidDismissScreen(_ bannerView: BannerView) {
print(#function)
}
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidReceiveAd");
}
- (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error {
NSLog(@"bannerView:didFailToReceiveAdWithError: %@", [error localizedDescription]);
}
- (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidRecordImpression");
}
- (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewWillPresentScreen");
}
- (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewWillDismissScreen");
}
- (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView {
NSLog(@"bannerViewDidDismissScreen");
}
Реализацию методов делегата баннера в демонстрационном приложении API iOS см. в примере Ad Delegate.
Варианты использования
Вот несколько примеров использования этих методов рекламных событий.
Добавьте баннер в иерархию представлений после получения объявления.
Вы можете захотеть отложить добавление GADBannerView
в иерархию представлений до тех пор, пока не будет получено объявление. Вы можете сделать это, прослушивая событие bannerViewDidReceiveAd:
Быстрый
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
// Add banner to view and add constraints.
addBannerViewToView(bannerView)
}
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
// Add bannerView to view and add constraints as above.
[self addBannerViewToView:self.bannerView];
}
Анимировать рекламный баннер
Вы также можете использовать событие bannerViewDidReceiveAd:
для анимации баннерной рекламы после ее возврата, как показано в следующем примере:
Быстрый
func bannerViewDidReceiveAd(_ bannerView: BannerView) {
bannerView.alpha = 0
UIView.animate(withDuration: 1, animations: {
bannerView.alpha = 1
})
}
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView {
bannerView.alpha = 0;
[UIView animateWithDuration:1.0 animations:^{
bannerView.alpha = 1;
}];
}
Приостановите и возобновите работу приложения
Протокол GADBannerViewDelegate
имеет методы для уведомления вас о событиях, например, когда щелчок вызывает показ или закрытие наложения. Если вы хотите отслеживать, были ли эти события вызваны рекламой, зарегистрируйтесь для этих методов GADBannerViewDelegate
.
Чтобы перехватывать все типы наложений или вызовов внешнего браузера, а не только те, которые происходят из-за кликов по рекламе, вашему приложению лучше прослушивать эквивалентные методы в UIViewController
или UIApplication
. Ниже приведена таблица, показывающая эквивалентные методы iOS, которые вызываются одновременно с методами GADBannerViewDelegate
:
Метод GADBannerViewDelegate | iOS-метод |
---|---|
bannerViewWillPresentScreen: | viewWillDisappear: |
bannerViewWillDismissScreen: | viewWillAppear: |
bannerViewDidDismissScreen: | viewDidAppear: |
Дополнительные ресурсы
Примеры на GitHub
- Пример прикрепленных адаптивных баннерных объявлений: Swift | SwiftUI | Objective-C
- Демонстрация расширенных функций: Swift | Objective-C
Следующие шаги
Складные баннеры
Сворачиваемые баннерные объявления — это баннерные объявления, которые изначально представлены в виде большего наложения с кнопкой для сворачивания объявления до меньшего размера. Рассмотрите возможность его использования для дальнейшей оптимизации производительности. Подробнее см. в разделе сворачиваемые баннерные объявления .
Встроенные адаптивные баннеры
Встроенные адаптивные баннеры больше и выше по сравнению с закрепленными адаптивными баннерами. Они имеют переменную высоту и могут быть такими же высокими, как экран устройства. Встроенные адаптивные баннеры рекомендуются вместо закрепленных адаптивных баннеров для приложений, которые размещают баннерную рекламу в прокручиваемом контенте. Подробнее см. в разделе встроенные адаптивные баннеры .