Добавление межстраничной рекламы в приложение для iOS

Audience Network позволяет монетизировать приложения iOS за счет рекламы Facebook. Межстраничная реклама — это полноэкранное объявление, которое можно показывать в приложении. Следуйте этим инструкциям, чтобы настроить показ такой рекламы. Если вас интересуют другие виды рекламы, ознакомьтесь с этим списком.

Давайте реализуем следующее место размещения межстраничной рекламы.



Шаг 1. Загрузка и показ межстраничной рекламы

Шаг 2. Проверка регистрации показов и кликов

Шаг 3. Отладка, если реклама не показывается

Шаг 4. Тестирование интеграции рекламы

Шаг 1. Загрузка и показ межстраничной рекламы

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

  1. Создав новый проект согласно руководству по началу работы с iOS, импортируйте FBAudienceNetwork, объявите, что ViewController реализует протокол FBInterstitialAdDelegate, и добавьте переменную экземпляра для межстраничной рекламы.
    import UIKit
    import FBAudienceNetwork
    
    class ViewController: UIViewController, FBInterstitialAdDelegate {
      private var interstitialAd: FBInterstitialAd?
    }
    #import <UIKit/UIKit.h>
    @import FBAudienceNetwork;
    
    @interface ViewController : UIViewController <FBInterstitialAdDelegate>
    @property (nonatomic, strong) FBInterstitialAd *interstitialAd;
    @end

  2. Затем создайте экземпляр объекта рекламы в методе viewDidLoad контроллера представления и реализуйте interstitialAdDidLoad
    override func viewDidLoad() {
      super.viewDidLoad()
    
      // Instantiate an InterstitialAd object.
      // NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing
      // and replace it later when you have signed up.
      // While you are using this temporary code you will only get test ads and if you release
      // your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
      let interstitialAd = FBInterstitialAd(placementID: "YOUR_PLACEMENT_ID")
      interstitialAd.delegate = self
    
      // For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
      interstitialAd.load()
      
      self.interstitialAd = interstitialAd
    }
    
    func interstitialAdDidLoad(_ interstitialAd: FBInterstitialAd) {
      guard interstitialAd.isAdValid else {
        return
      }
      print("Ad is loaded and ready to be displayed")
      interstitialAd.show(fromRootViewController: self)
    }
    - (void)viewDidLoad 
    {
      [super viewDidLoad];
    
      // Instantiate an InterstitialAd object. 
      // NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing 
      // and replace it later when you have signed up.
      // While you are using this temporary code you will only get test ads and if you release
      // your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
      self.interstitialAd = [[FBInterstitialAd alloc] initWithPlacementID:@"YOUR_PLACEMENT_ID"];
    
      self.interstitialAd.delegate = self;
    
      // For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
      [self.interstitialAd loadAd];
    }
    
    - (void)interstitialAdDidLoad:(FBInterstitialAd *)interstitialAd
    {
      NSLog(@"Ad is loaded and ready to be displayed");
    
      if (interstitialAd && interstitialAd.isAdValid) {
        // You can now display the full screen ad using this code:
        [interstitialAd showAdFromRootViewController:self];
      }
    }

  3. В YOUR_PLACEMENT_ID указывается временный ID, который используется только для тестирования.

    Если вы будете использовать этот временный ID в рабочем коде, вместо рекламных объявлений пользователи будут получать ошибку No Fill. После тестирования необходимо вернуться к этому шагу и подставить вместо этого временного ID рабочий ID места размещения.

    Инструкции по генерации рабочего ID места размещения см. в статье о настройке Audience Network.

    Выберите сборку в качестве устройства и выполните показанный выше код. Вы увидите следующее:

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

Не вызывайте loadAd в FBInterstitialAd, пока реклама показывается на экране. Если вам требуется другой объект FBInterstitialAd на будущее, вы можете создать его, когда пользователь закроет текущий, например в обратном вызове interstitialAdDidClose.

Шаг 2. Проверка регистрации показов и кликов

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

func interstitialAdWillLogImpression(_ interstitialAd: FBInterstitialAd) {
  print("The user sees the ad")
  // Use this function as indication for a user's impression on the ad.
}

func interstitialAdDidClick(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the ad and will be taken to its destination")
  // Use this function as indication for a user's click on the ad.
}

func interstitialAdWillClose(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the close button, the ad is just about to close")
  // Consider to add code here to resume your app's flow
}

func interstitialAdDidClose(_ interstitialAd: FBInterstitialAd) {
  print("The user clicked on the close button, the ad is just about to close")
  // Consider to add code here to resume your app's flow
}
- (void)interstitialAdWillLogImpression:(FBInterstitialAd *)interstitialAd 
{
  NSLog(@"The user sees the ad");
  // Use this function as indication for a user's impression on the ad.
}

- (void)interstitialAdDidClick:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"The user clicked on the ad and will be taken to its destination");
  // Use this function as indication for a user's click on the ad.
}

- (void)interstitialAdWillClose:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"The user clicked on the close button, the ad is just about to close");
  // Consider to add code here to resume your app's flow
}

- (void)interstitialAdDidClose:(FBInterstitialAd *)interstitialAd
{
  NSLog(@"Interstitial had been closed");
  // Consider to add code here to resume your app's flow
}

Шаг 3. Отладка, если реклама не демонстрируется

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

func interstitialAd(_ interstitialAd: FBInterstitialAd, didFailWithError error: Error) {
  print("Interstitial ad failed to load with error: \(error.localizedDescription)")
}
- (void)interstitialAd:(FBInterstitialAd *)interstitialAd didFailWithError:(NSError *)error
{
  NSLog(@"Interstitial ad failed to load with error: %@", error);
}

Если реклама для показа отсутствует, будет вызван interstitialAd:didFailWithError:, а для кода error.code будет установлено значение 1001. Если вы используете собственную службу отчетов или агрегацию, для обнаружения подобных случаев можно проверять значение кода. В этой ситуации можно перейти на другую рекламную сеть, однако не отправляйте сразу же после этого повторный запрос рекламы.

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

  • Изучите наши примеры кода, демонстрирующие способы использования нативной рекламы. NativeAdSample является частью SDK и находится в папке FBAudienceNetwork/samples. Откройте проект в Xcode и запустите его на устройстве или в эмуляторе.