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

Выберите платформу: Android iOS Unity Flutter

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

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

Предпосылки

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

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

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

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

Дополнительную информацию о том, как работают тестовые объявления 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 to the свойству 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 , чтобы следующая промежуточная реклама начала загружаться сразу после закрытия предыдущей.

Показать рекламу

Interstitials следует отображать во время естественных пауз в потоке приложения. Хороший пример — между уровнями игры или после того, как пользователь выполнил задачу.

Быстрый

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 , чтобы узнать, готова ли она к показу.

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

Примеры на

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

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

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

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