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

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

В этом руководстве рассказывается, как добавить межстраничные объявления в приложение для iOS.

Требования

Прежде чем продолжить, настройте Google Mobile Ads SDK.

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

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

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

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

Подробнее Google Mobile Ads SDK о включении тестовых объявлений…

Реализация

Чтобы добавить межстраничные объявления, выполните следующие действия:

  1. Загрузите объявление.
  2. Зарегистрируйте обратные вызовы.
  3. Покажите объявление.

Как загрузить объявление

Объявление загружается с помощью метода load(adUnitID:request) класса GADInterstitialAd.

Swift

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 возвращаемого объявления:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Протокол GADFullScreenContentDelegate обрабатывает обратные вызовы, когда объявление показывается успешно или нет, а также когда оно закрывается. Ниже приведен пример кода, в котором реализован протокол:

Swift

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, чтобы оно начинало загружаться сразу после закрытия предыдущего.

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

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

Swift

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:, который вызывается, когда пользователь завершает взаимодействие с объявлением. Кроме того, во время показа объявления можно временно приостановить выполнение ресурсоемких задач, например игрового цикла. Это позволит избежать медленной работы графики, ее зависания и прерывания видео.
Дайте странице достаточно времени на загрузку.
Важно не только показывать межстраничные объявления в подходящий момент, но и следить за тем, чтобы пользователю не приходилось ждать их загрузки. Загрузка объявления заранее, до того, как вы планируете его показать, гарантирует, что в вашем приложении будет полностью загруженное межстраничное объявление, готовое к показу.
Не показывайте пользователю слишком много объявлений.
Увеличение частоты показа межстраничных объявлений может показаться отличным способом повысить доход, но это также может ухудшить удобство для пользователей и снизить CTR. Убедитесь, что реклама не показывается слишком часто и не мешает пользователям наслаждаться приложением.
Не используйте обратный вызов завершения загрузки для показа межстраничного объявления.
Это может привести к неудобству для пользователей. Вместо этого предварительно загрузите объявление, прежде чем вам понадобится его показать. Затем проверьте метод canPresentFromRootViewController:error: на странице GADInterstitialAd, чтобы узнать, можно ли показывать видео.

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

Примеры на GitHub

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

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

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

Дальнейшие действия