Межстраничные объявления

Выберите платформу: Android (бета-версия)Новый Android iOS Unity Flutter

Межстраничная реклама — это полноэкранные объявления, которые закрывают интерфейс приложения до тех пор, пока пользователь их не закроет. Обычно они отображаются в естественных точках перехода в процессе работы приложения, например, между действиями или во время паузы между уровнями в игре. Когда приложение показывает межстраничную рекламу, пользователь может либо нажать на объявление и перейти к следующему шагу, либо закрыть его и вернуться в приложение. Пример из практики .

В этом руководстве показано, как интегрировать межстраничную рекламу в iOS-приложение.

Предварительные требования

Всегда проводите тестирование с помощью тестовых объявлений.

При разработке и тестировании приложений обязательно используйте тестовые объявления, а не реальные, рабочие объявления. Несоблюдение этого правила может привести к блокировке вашего аккаунта.

Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для межстраничной рекламы в iOS:
ca-app-pub-3940256099942544/4411468910

Он специально настроен на возврат тестовых объявлений для каждого запроса, и вы можете свободно использовать его в своих приложениях во время кодирования, тестирования и отладки. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.

Подробную информацию о тестовых объявлениях в Google Mobile Ads SDK см. в разделе «Включение тестовых объявлений» .

Выполнение

Основные шаги по интеграции межстраничной рекламы:

  1. Загрузить рекламу.
  2. Зарегистрируйтесь для участия в обратном звонке.
  3. Показать рекламу.

Загрузить рекламу

Загрузка рекламы осуществляется с помощью метода load(adUnitID:request) класса GADInterstitialAd .

Быстрый

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await InterstitialAd.load(
      with: "ca-app-pub-3940256099942544/4411468910", request: Request())
    interstitial?.fullScreenContentDelegate = self
  } catch {
    print("Failed to load interstitial ad with error: \(error.localizedDescription)")
  }
}

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, FullScreenContentDelegate {
  private var interstitialAd: InterstitialAd?

  func loadAd() async {
    do {
      interstitialAd = try await InterstitialAd.load(
        with: "ca-app-pub-3940256099942544/4411468910", request: Request())
      interstitialAd?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

Objective-C

[GADInterstitialAd
     loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
              request:[GADRequest request]
    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
      if (error) {
        NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
        return;
      }
      self.interstitial = ad;
      self.interstitial.fullScreenContentDelegate = self;
    }];

Зарегистрируйтесь для участия в обратном звонке.

Для получения уведомлений о событиях презентации необходимо присвоить атрибут GADFullScreenContentDelegate свойству fullScreenContentDelegate возвращаемого объявления:

Быстрый

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Протокол GADFullScreenContentDelegate обрабатывает обратные вызовы в случае успешного или неудачного показа рекламы, а также при её закрытии. Следующий код демонстрирует реализацию протокола:

Быстрый

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
  print("\(#function) called with error: \(error.localizedDescription)")
  // Clear the interstitial ad.
  interstitial = nil
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitial = nil
}

SwiftUI

func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: FullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

Objective-C

- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)ad:(id<GADFullScreenPresentingAd>)ad
    didFailToPresentFullScreenContentWithError:(NSError *)error {
  NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
}

- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
  NSLog(@"%s called", __PRETTY_FUNCTION__);
  // Clear the interstitial ad.
  self.interstitial = nil;
}

Объект GADInterstitialAd является одноразовым. Это означает, что после показа межстраничной рекламы её нельзя будет показать снова. Рекомендуется загружать следующую межстраничную рекламу в методе adDidDismissFullScreenContent: класса GADFullScreenContentDelegate , чтобы следующая межстраничная реклама начала загружаться сразу после закрытия предыдущей.

Показать объявление

Всплывающие рекламные ролики следует показывать во время естественных пауз в процессе работы приложения. Хорошим примером является переход между уровнями игры или после того, как пользователь выполнит какое-либо задание.

Быстрый

ad.present(from: self!)

SwiftUI

Отслеживайте события пользовательского интерфейса в представлении, чтобы определить, когда показывать рекламу.

var body: some View {
  // ...
  }
  .onChange(of: countdownTimer.isComplete) { newValue in
    showGameOverAlert = newValue
  }
  .alert(isPresented: $showGameOverAlert) {
    Alert(
      title: Text("Game Over"),
      message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
      dismissButton: .cancel(
        Text("OK"),
        action: {
          viewModel.showAd()
        }))

Предъявите промежуточную рекламу, используя модель просмотра:

func showAd() {
  guard let interstitialAd = interstitialAd else {
    return print("Ad wasn't ready.")
  }

  interstitialAd.present(from: nil)
}

Objective-C

[self.interstitial presentFromRootViewController:self];

Передовые методы

Подумайте, подходят ли для вашего приложения межстраничные объявления.
Межстраничные объявления лучше всего работают в приложениях с естественными точками перехода. Завершение задачи внутри приложения, например, отправка изображения или прохождение уровня игры, создает такую ​​точку. Поскольку пользователь ожидает перерыва в действии, легко показать межстраничное объявление, не нарушая его пользовательский опыт. Убедитесь, что вы продумали, в каких точках рабочего процесса вашего приложения вы будете показывать межстраничные объявления и как пользователь, скорее всего, отреагирует.
Не забудьте приостановить показ межстраничной рекламы.
Существует несколько различных типов межстраничной рекламы: текстовая, графическая, видео и другие. Важно убедиться, что при показе межстраничной рекламы ваше приложение также приостанавливает использование некоторых ресурсов, чтобы реклама могла ими воспользоваться. Например, при вызове функции отображения межстраничной рекламы обязательно приостановите воспроизведение любого звука, производимого вашим приложением. Вы можете возобновить воспроизведение звуков в обработчике события adDidDismissFullScreenContent: который будет вызван после того, как пользователь завершит взаимодействие с рекламой. Кроме того, рассмотрите возможность временной остановки любых ресурсоемких вычислительных задач (таких как игровой цикл) во время показа рекламы. Это гарантирует, что пользователь не столкнется с медленной или неотзывчивой графикой или зависанием видео.
Предусмотрите достаточное время для погрузки.
Так же, как важно показывать межстраничную рекламу в подходящее время, важно также убедиться, что пользователю не приходится ждать ее загрузки. Предварительная загрузка рекламы перед ее показом гарантирует, что в вашем приложении будет полностью загружена межстраничная реклама, готовая к показу в нужный момент.
Не заваливайте пользователя рекламой.
Увеличение частоты показа межстраничной рекламы в вашем приложении может показаться отличным способом увеличить доход, но это также может ухудшить пользовательский опыт и снизить коэффициент кликабельности. Убедитесь, что пользователи не сталкиваются с настолько частыми прерываниями, что перестают получать удовольствие от использования вашего приложения.
Не используйте функцию обратного вызова завершения загрузки для отображения промежуточного окна.
Это может привести к ухудшению пользовательского опыта. Вместо этого предварительно загрузите рекламу перед тем, как её нужно будет показать. Затем проверьте метод canPresentFromRootViewController:error: в GADInterstitialAd , чтобы узнать, готова ли она к показу.

Дополнительные ресурсы

Примеры на GitHub

Просмотрите полные примеры межстраничных объявлений на предпочитаемом вами языке:

Видеоуроки по Mobile Ads Garage

Истории успеха

Следующие шаги