Руководство по миграции на версию 6

Важно

Обязательно обновите версии используемых адаптеров на актуальные (Медиация Яндекса и адаптеры для сторонних медиационных сетей). Иначе возможны ошибки неправильной интеграции адаптеров и реклама не будет показана.

Баннеры

Класс YMAAdSize переименован в YMABannerAdSize. Удалены методы flexibleSizeWithCGSize:(CGSize)size и fixedSizeWithCGSize:(CGSize)size, ранее отмеченные как deprecated.

Используйте методы в зависимости от типа рекламного объявления:

Для создания адаптивного sticky-баннера — метод stickySizeWithContainerWidth:(CGFloat)width.

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

Баннер не перекрывает основной контент приложения и часто используется в приложениях-играх.

Высота sticky-баннера определяется автоматически, адаптируясь под размер экрана устройства и не превышает 15% высоты экрана.

Важно

В адаптивном sticky-баннере с версии 6.0.0 появилось автообновление.

Если у вас ранее было реализовано автообновление для sticky-баннера, его следует отключить.

Для создания адаптивного inline-баннера — метод inlineSizeWithWidth:(CGFloat)width maxHeight:(CGFloat)height.

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

Высота баннера подбирается автоматически и может достигать высоты экрана устройства.

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

Для обратной совместимости вместо fixedSizeWithCGSize:(CGSize)size был добавлен метод fixedSizeWithWidth:(CGFloat)width height:(CGFloat)height, однако его использование не рекомендуется. Используйте stickySizeWithContainerWidth:(CGFloat)width. В SDK 6.0.0 высота баннера рассчитывается автоматически и известна до отправки запроса рекламы. Эту высоту можно использовать для верстки экрана.

Удаление deprecated метода flexibleSizeWithCGSize:(CGSize)size

SDK 5

let adSize = YMAAdSize.flexibleSize(withCGSize: CGSize(width: screenWidth, height: bannerHeight))

SDK 6

let adSize = YMABannerAdSize.inlineSize(withWidth: screenWidth, maxHeight: bannerHeight)

Удаление deprecated метода fixedSizeWithCGSize:(CGSize)size

SDK 5

let adSize = YMAAdSize.fixedSize(with: CGSize(width: screenWidth, height: bannerHeight))

SDK 6

Используйте метод inlineSizeWithWidth:(CGFloat)width maxHeight:(CGFloat)height если вам нужно встроить баннер в контент.

let adSize = YMABannerAdSize.inlineSize(withWidth: screenWidth, maxHeight: bannerHeight)

Или метод stickySizeWithContainerWidth:(CGFloat)width, если вы хотите расположить баннер сверху или снизу на экране приложения.

let adSize = YMABannerAdSize.stickySize(withContainerWidth: screenWidth)

Переименование класса YMAAdSize в YMABannerAdSize

SDK 5

let adSize = YMAAdSize.fixedSizeWithWidth(width: screenWidth, height: bannerHeight)

SDK 6

let adSize = YMABannerAdSize.stickySize(withContainerWidth: screenWidth)

Переименование класса YMAAdSize в YMABannerAdSize

SDK 5

let adSize = YMAAdSize.fixedSizeWithWidth(width: screenWidth, height: bannerHeight)

SDK 6

let adSize = YMABannerAdSize.stickySize(withContainerWidth: screenWidth)

Реклама с вознаграждением

Был изменен подход к созданию и загрузке рекламы. Теперь есть объект-загрузчик YMARewardedAdLoader, который занимается загрузкой рекламных объявлений и объект рекламы YMARewardedAd, получаемый с помощью методов делегата загрузчика. Внутренняя логика по загрузке и отображению осталась прежней. Подробнее ознакомиться с новым апи можно в справочнике SDK.

SDK 5

final class RewardedAdViewController: UIViewController {
   private lazy var rewardedAd: YMARewardedAd = {
        let rewardedAd = YMARewardedAd(adUnitID: "R-M-XXXXX-YY")
        rewardedAd.delegate = self
        return rewardedAd
    }()

    func loadAd() {
      rewardedAd.load()
    }

    func showAd() {
      rewardedAd.present(from: self)
    }

}

SDK 6

final class RewardedAdViewController: UIViewController {
   private var rewardedAd: YMARewardedAd?
   private lazy var rewardedAdLoader: YMARewardedAdLoader = {
        let loader = YMARewardedAdLoader()
        loader.delegate = self
        return loader
    }()

    func loadAd() {
      let configuration = YMAAdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
      rewardedAdLoader.loadAd(with: configuration)
    }

    func showAd() {
      rewardedAd?.show(from: self)
    }

}

extension RewardedAdViewController: YMARewardedAdLoaderDelegate {
   func rewardedAdLoader(_ adLoader: YMARewardedAdLoader, didLoad rewardedAd: YMARewardedAd) {
        self.rewardedAd = rewardedAd
    }
}

Межстраничная реклама

Был изменен подход к созданию и загрузке межстраничной рекламы. Теперь есть объект-загрузчик YMAInterstitialAdLoader, который занимается загрузкой рекламных объявлений и объект рекламы YMAInterstitialAd, получаемый с помощью методов делегата загрузчика. Внутренняя логика по загрузке и отображению осталась прежней. Подробнее ознакомиться с новым апи можно в справочнике SDK.

SDK 5

final class InterstitialAdViewController: UIViewController {
   private lazy var interstitialAd: YMAInterstitialAd = {
        let interstitialAd = YMAInterstitialAd(adUnitID: "R-M-XXXXX-YY")
        interstitialAd.delegate = self
        return interstitialAd
    }()

    func loadAd() {
      interstitialAd.load()
    }

    func showAd() {
      interstitialAd.present(from: self)
    }

}

SDK 6

final class InterstitialAdViewController: UIViewController {
   private var interstitialAd: YMAInterstitialAd?
   private lazy var interstitialAdLoader: YMInterstitialAdLoader = {
        let loader = YMInterstitialAdLoader()
        loader.delegate = self
        return loader
    }()

    func loadAd() {
      let configuration = YMAAdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
      interstitialAdLoader.loadAd(with: configuration)
    }

    func showAd() {
      interstitialAd?.show(from: self)
    }

}

extension InterstitialAdViewController: YMAInterstitialAdLoaderDelegate {
   func interstitialAdLoader(_ adLoader: YMAInterstitialAdLoader, didLoad interstitialAd: YMAInterstitialAd) {
        self.interstitialAd = interstitialAd
    }
}

Полные примеры интеграции можно посмотреть здесь:

App Open Ad

Был добавлен новый формат рекламных объявлений — App Open Ad. Подробнее о нем можно узнать в разделе Реклама при открытии приложения.

Минимальная версия iOS

Для работы с Yandex Mobile Ads 6.0 требуется iOS 13 и выше. Если у вас более ранняя версия ОС, то необходимо обновить ее до iOS 13.

Медиация Яндекса

Важно

Обязательно обновите версии используемых адаптеров на актуальные (Медиация Яндекса и адаптеры для сторонних медиационных сетей). Иначе возможны ошибки неправильной интеграции адаптеров и реклама не будет показана.

Новые версии адаптеров

Актуальные версии адаптеров для медиации Яндекса (на момент выхода версии SDK 6.0.0):

  • Digital Turbine (ex. AdColony): 4.9.0.5.
  • AppLovin: 11.11.2.0.
  • Chartboost: 9.4.0.0.
  • Google: 10.9.0.0.
  • InMobi: 10.5.5.1.
  • IronSource: 7.4.0.0.
  • Mintegral: 7.4.0.2.
  • VK Реклама (ex. myTarget): 5.18.0.1.
  • Start.io: 4.10.0.0.
  • Unity Ads: 4.8.0.1.

Актуальные версии адаптеров для сторонних медиационных платформ (на момент выхода версии SDK 6.0.0):

  • Google AdMob (ex. AdMob): 10.9.0.
  • Unity LevelPlay (IronSource): 7.4.0.

Переименование адаптера Google AdMob (ex. AdMob)

Адаптеры AdMobYandexMobileAdsAdapters были переименованы в GoogleYandexMobileAdsAdapters. Если вы используете единую сборку медиации, ничего делать не нужно. В случае ручного подключения адаптеров необходимо внести правки в Podfile вашего проекта.

SDK 5

pod 'AdMobYandexMobileAdsAdapters'

SDK 6

pod 'GoogleYandexMobileAdsAdapters'