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

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

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

Предпосылки

Всегда тестируйте тестовые объявления

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

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

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

Дополнительные сведения о том, как работают тестовые объявления Mobile Ads SDK, см. в разделе Тестовые объявления .

Выполнение

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

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

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

Загрузка объявления выполняется с помощью статического метода loadWithAdUnitID:request:completionHandler: класса GADInterstitialAd . Для метода load требуется идентификатор вашего рекламного блока, объект GADRequest и обработчик завершения, который вызывается при успешной или неудачной загрузке объявления. Загруженный объект GADInterstitialAd предоставляется в качестве параметра в обработчике завершения. В приведенном ниже примере показано, как загрузить GADInterstitialAd в ваш класс ViewController .

Быстрый

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                      }
    )
  }
}

Цель-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

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

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

Чтобы получать уведомления о событиях презентации, необходимо реализовать протокол GADFullScreenContentDelegate и назначить его свойству fullScreenContentDelegate возвращенного объявления. Протокол GADFullScreenContentDelegate обрабатывает обратные вызовы, когда реклама показывается успешно или неудачно, а также когда она отклоняется. В следующем коде показано, как реализовать протокол и назначить его объявлению:

Быстрый

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                        interstitial?.fullScreenContentDelegate = self
                      }
    )
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Цель-C

@interface ViewController ()<GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request: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;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
   NSLog(@"Ad did dismiss full screen content.");
}

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

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

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

Быстрый

@IBAction func doSomething(_ sender: Any) {
  if interstitial != nil {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Цель-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Лучшие практики

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

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

Примеры на GitHub

  • Пример межстраничных объявлений: Swift | Цель-C

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

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

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