Руководство по миграции на версию 8.0.0 (beta)

Новая версия Yandex Mobile Ads SDK вносит ряд изменений в API направленных на улучшение пользовательского опыта разработчиков.

Основные изменения

1. Изменения в AdRequest

Классы AdRequestConfiguration, NativeAdRequestConfiguration и все Mutable-классы запросов удалены. Используйте AdRequest для всех типов рекламы. Свойство adUnitID теперь передаётся как обязательный параметр инициализации AdRequest.

Класс Статус
AdRequestConfiguration Удалён. Используйте AdRequest
NativeAdRequestConfiguration Удалён. Используйте AdRequest и NativeAdOptions
MutableAdRequest Удалён
MutableAdRequestConfiguration Удалён
MutableNativeAdRequestConfiguration Удалён

Примеры

Swift
SDK 7 SDK 8
let configuration = AdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
loader.loadAd(with: configuration)
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")
loader.loadAd(with: request) { result in
    switch result {
    case .success(let ad):
        // реклама загружена
    case .failure(let error):
        // ошибка загрузки
    }
}
Objective-C
SDK 7 SDK 8
YMAAdRequestConfiguration *configuration =
    [[YMAAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
[loader loadAdWithConfiguration:configuration];
YMAAdRequest *request =
    [[YMAAdRequest alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
[loader loadAdWithRequest:request
       completionHandler:^(YMAInterstitialAd * _Nullable ad,
                           NSError * _Nullable error) {
    if (ad) {
        // реклама загружена
    } else {
        // ошибка загрузки
    }
}];

2. Изменения в Targeting

Поля age, gender, location, contextQuery и contextTags удалены из AdRequest. Для управления параметрами таргетинга используйте новый класс AdTargeting.

Примечание: Класс AdTargetInfo переименован в AdTargeting, поле targetInfo в AdRequestTokenConfiguration и BidderTokenRequestConfiguration переименовано в targeting.

Класс Свойство Статус
AdRequest age Удалено. Используйте AdTargeting.age
AdRequest gender Удалено. Используйте AdTargeting.gender
AdRequest location Удалено. Используйте AdTargeting.location
AdRequest contextQuery Удалено. Используйте AdTargeting.contextQuery
AdRequest contextTags Удалено. Используйте AdTargeting.contextTags
AdTargetInfo Переименован в AdTargeting
targetInfo Переименовано в targeting
AdRequest targeting Добавлено
AdTargeting Добавлен

Примеры

Swift
SDK 7 SDK 8
let request = AdRequest(
    adUnitID: "R-M-XXXXX-YY",
    age: 25,
    gender: kYMAGenderMale,
    location: location
)
let targeting = AdTargeting(
    age: 25,
    gender: .male,
    location: location
)
let request = AdRequest(adUnitID: "R-M-XXXXX-YY", targeting: targeting)
Objective-C
SDK 7 SDK 8
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:@"R-M-XXXXX-YY"
                                                           age:@(25)
                                                        gender:kYMAGenderMale
                                                      location:location];
YMAAdTargeting *targeting = [[YMAAdTargeting alloc] initWithAge:@(25)
                                                         gender:YMAGender.male
                                                       location:location
                                                   contextQuery:nil
                                                    contextTags:nil];
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:@"R-M-XXXXX-YY"
                                                     targeting:targeting];

3. Изменения в загрузчиках рекламы

Делегаты загрузки удалены — вместо них результат загрузки приходит в completion handler. Параметр adUnitID теперь передаётся через AdRequest.

Класс SDK 7 SDK 8 Статус
AppOpenAdLoader loadAd(with:) + делегат loadAd(with:completion:) Изменён
InterstitialAdLoader loadAd(with:) + делегат loadAd(with:completion:) Изменён
RewardedAdLoader loadAd(with:) + делегат loadAd(with:completion:) Изменён
NativeAdLoader loadAd(with:) + делегат loadAd(with:options:completion:) Изменён
NativeBulkAdLoader loadAds(with:adsCount:) + делегат loadAds(with:adsCount:options:completion:) Изменён
SliderAdLoader loadAd(with:) + делегат loadAd(with:options:completion:) Изменён
AppOpenAdLoaderDelegate Удалён
InterstitialAdLoaderDelegate Удалён
RewardedAdLoaderDelegate Удалён
NativeAdLoaderDelegate Удалён
NativeBulkAdLoaderDelegate Удалён
SliderAdLoaderDelegate Удалён

Примеры

Swift
SDK 7 SDK 8
// Interstitial Ads
let configuration = AdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
interstitialAdLoader.delegate = self
interstitialAdLoader.loadAd(with: configuration)

// Native Ads
let nativeConfiguration = NativeAdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
nativeAdLoader.delegate = self
nativeAdLoader.loadAd(with: nativeConfiguration)
// Interstitial Ads
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")
interstitialAdLoader.loadAd(with: request) { result in
    switch result {
    case .success(let ad):
        // реклама загружена
    case .failure(let error):
        // ошибка загрузки
    }
}

// Native Ads
let options = NativeAdOptions()
nativeAdLoader.loadAd(with: request, options: options) { result in
    switch result {
    case .success(let ad):
        // реклама загружена
    case .failure(let error):
        // ошибка загрузки
    }
}
Objective-C
SDK 7 SDK 8
// Interstitial Ads
YMAAdRequestConfiguration *configuration =
    [[YMAAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
interstitialAdLoader.delegate = self;
[interstitialAdLoader loadAdWithConfiguration:configuration];

// Native Ads
YMANativeAdRequestConfiguration *nativeConfig =
    [[YMANativeAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
nativeAdLoader.delegate = self;
[nativeAdLoader loadAdWithConfiguration:nativeConfig];
// Interstitial Ads
YMAAdRequest *request =
    [[YMAAdRequest alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
[interstitialAdLoader loadAdWithRequest:request
                      completionHandler:^(YMAInterstitialAd * _Nullable ad,
                                          NSError * _Nullable error) {
    if (ad) {
        // реклама загружена
    } else {
        // ошибка загрузки
    }
}];

// Native Ads
YMANativeAdOptions *options = [[YMANativeAdOptions alloc] init];
[nativeAdLoader loadAdWithRequest:request
                          options:options
                completionHandler:^(id<YMANativeAd> _Nullable ad,
                                    NSError * _Nullable error) {
    if (ad) {
        // реклама загружена
    } else {
        // ошибка загрузки
    }
}];

3.1 Поддержка Structured Concurrency

Добавлена поддержка Swift Structured Concurrency (async/await) во всех загрузчиках рекламы.

Загрузчик Метод Статус
AppOpenAdLoader loadAd(with:) Добавлен
InterstitialAdLoader loadAd(with:) Добавлен
RewardedAdLoader loadAd(with:) Добавлен
NativeAdLoader loadAd(with:options:) Добавлен
NativeBulkAdLoader loadAds(with:adsCount:options:) Добавлен
SliderAdLoader loadAd(with:options:) Добавлен

Примеры

Swift
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")

// Interstitial Ads
let interstitialAd = try await interstitialAdLoader.loadAd(with: request)

// Rewarded Ads
let rewardedAd = try await rewardedAdLoader.loadAd(with: request)

// AppOpen Ads
let appOpenAd = try await appOpenAdLoader.loadAd(with: request)

// Native Ads
let options = NativeAdOptions()
let nativeAd = try await nativeAdLoader.loadAd(with: request, options: options)

// Slider Ads
let sliderAd = try await sliderAdLoader.loadAd(with: request, options: options)

// Native Bulk Ads
let nativeAds = try await nativeBulkAdLoader.loadAds(with: request, adsCount: 3, options: options)

4. Изменения в Banner API

Класс AdView переименован в BannerAdView, протокол AdViewDelegate — в BannerAdViewDelegate. Свойство adUnitID удалено из BannerAdView — теперь adUnitID передаётся в конструктор AdRequest перед каждой загрузкой. Фабричные методы BannerAdSize переименованы.

Класс SDK 7 SDK 8 Статус
AdView BannerAdView Переименован
AdViewDelegate BannerAdViewDelegate Переименован
BannerAdView adViewDidLoad bannerAdViewDidLoad Переименован
BannerAdView adViewDidFailLoading bannerAdViewDidFailLoading Переименован
BannerAdView adViewDidClick bannerAdViewDidClick Переименован
BannerAdView adView(_:didTrackImpression:) bannerAdView(_:didTrackImpression:) Переименован
BannerAdView AdView(adUnitID:adSize:) BannerAdView(adSize:) Изменён
BannerAdView AdView.adUnitID BannerAdView.adInfo?.adUnitID Изменён
BannerAdView AdView.loadAd() Удалён
BannerAdView AdView.loadAd(with: AdRequest?) BannerAdView.loadAd(with: AdRequest) Изменён
BannerAdSize fixedSize(withWidth:height:) fixed(width:height:) Переименован
BannerAdSize inlineSize(withWidth:maxHeight:) inline(width:maxHeight:) Переименован
BannerAdSize stickySize(withContainerWidth:) sticky(containerWidth:) Переименован

Примеры

Swift
SDK 7 SDK 8
let adSize = BannerAdSize.stickySize(withContainerWidth: screenWidth)
let adView = AdView(adUnitID: "R-M-XXXXX-YY", adSize: adSize)
adView.delegate = self
adView.loadAd()
let adSize = BannerAdSize.sticky(containerWidth: screenWidth)
let bannerAdView = BannerAdView(adSize: adSize)
bannerAdView.delegate = self
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")
bannerAdView.loadAd(with: request)
Objective-C
SDK 7 SDK 8
YMABannerAdSize *adSize = [YMABannerAdSize stickySizeWithContainerWidth:screenWidth];
YMAAdView *adView = [[YMAAdView alloc] initWithAdUnitID:@"R-M-XXXXX-YY"
                                                 adSize:adSize];
adView.delegate = self;
[adView loadAd];
YMABannerAdSize *adSize = [YMABannerAdSize stickyWithContainerWidth:screenWidth];
YMABannerAdView *bannerAdView = [[YMABannerAdView alloc] initWithAdSize:adSize];
bannerAdView.delegate = self;
YMAAdRequest *request = [[YMAAdRequest alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
[bannerAdView loadAdWithRequest:request];

5. Изменения в AdInfo

Свойства рекламных объектов info, adAttributes, creativeID, campaignID удалены. Используйте adInfo. Также изменены имена некоторых свойств AdInfo.

Класс SDK 7 SDK 8 Статус
AdInfo adUnitId adUnitID Переименовано
AdInfo data extraData Переименовано
AdInfo adSize Удалено
AdInfo partnerText Добавлено
BannerAdView,
NativeAd,
SliderAd,
AppOpenAd,
InterstitialAd,
RewardedAd
info adInfo.extraData Изменено
BannerAdView,
NativeAd,
SliderAd,
AppOpenAd,
InterstitialAd,
RewardedAd
adAttributes adInfo.creatives Изменено
BannerAdView,
NativeAd,
SliderAd,
AppOpenAd,
InterstitialAd,
RewardedAd
creativeID adInfo.creatives[i].creativeID Изменено
BannerAdView,
NativeAd,
SliderAd,
AppOpenAd,
InterstitialAd,
RewardedAd
campaignID adInfo.creatives[i].campaignID Изменено
Creative placeID Добавлено
Creative offerID Добавлено

Примеры

Swift
SDK 7 SDK 8
// adAttributes и info
let attributes = nativeAd.adAttributes
let info = nativeAd.info

// creativeID и campaignID
let creativeID = interstitialAd.creativeID
let campaignID = interstitialAd.campaignID

// adUnitId
let adUnitId = interstitialAd.adInfo.adUnitId

// adSize (доступно)
let size = bannerAdView.adInfo.adSize
// adInfo.creatives и adInfo.extraData
let creatives = nativeAd.adInfo.creatives
let extraData = nativeAd.adInfo.extraData

// creativeID, campaignID, placeID, offerID через creatives
if let creative = interstitialAd.adInfo.creatives.first {
    let creativeID = creative.creativeID
    let campaignID = creative.campaignID
    let placeID = creative.placeID
    let offerID = creative.offerID
}

// adUnitID (переименовано)
let adUnitID = interstitialAd.adInfo.adUnitID

// partnerText (новое)
let partnerText = interstitialAd.adInfo.partnerText

// adSize удалён — размер баннера доступен через BannerAdView.adSize
Objective-C
SDK 7 SDK 8
// adAttributes и info
NSArray *attributes = nativeAd.adAttributes;
NSDictionary *info = nativeAd.info;

// creativeID и campaignID
NSString *creativeID = interstitialAd.creativeID;
NSString *campaignID = interstitialAd.campaignID;

// adUnitId
NSString *adUnitId = interstitialAd.adInfo.adUnitId;

// adSize (доступно)
YMAAdSize *size = bannerAdView.adInfo.adSize;
// adInfo.creatives и adInfo.extraData
NSArray<YMACreative *> *creatives = nativeAd.adInfo.creatives;
NSDictionary *extraData = nativeAd.adInfo.extraData;

// creativeID, campaignID, placeID, offerID через creatives
YMACreative *creative = interstitialAd.adInfo.creatives.firstObject;
if (creative != nil) {
    NSString *creativeID = creative.creativeID;
    NSString *campaignID = creative.campaignID;
    NSString *placeID = creative.placeID;
    NSString *offerID = creative.offerID;
}

// adUnitID (переименовано)
NSString *adUnitID = interstitialAd.adInfo.adUnitID;

// partnerText (новое)
NSString *partnerText = interstitialAd.adInfo.partnerText;

// adSize удалён — размер баннера доступен через YMABannerAdView.adSize

6. Изменения в основном классе SDK

Класс MobileAds переименован в YandexAds. Privacy-методы и свойства перенесены в новый класс с обновлёнными именами.

SDK 7 SDK 8 Статус
MobileAds YandexAds Переименован
MobileAds.sdkVersion YandexAds.sdkVersion.stringValue Изменено
MobileAds.setLocationTrackingEnabled(_:) YandexAds.setLocationTracking(_:) Переименован
MobileAds.setAgeRestrictedUser(_:) YandexAds.setAgeRestricted(_:) Переименован
MobileAds.setUserConsent(_:) YandexAds.setUserConsent(_:) Перенесён
YMANativeAdView NativeAdView Переименован
YMANativeMediaView NativeMediaView Переименован

Примеры

Swift
SDK 7 SDK 8
import YandexMobileAds
MobileAds.setLocationTrackingEnabled(true)
MobileAds.setAgeRestrictedUser(false)
MobileAds.setUserConsent(true)
let version = MobileAds.sdkVersion
import YandexMobileAds
YandexAds.setLocationTracking(true)
YandexAds.setAgeRestricted(false)
YandexAds.setUserConsent(true)
let version = YandexAds.sdkVersion.stringValue
Objective-C
SDK 7 SDK 8
[YMAMobileAds setLocationTrackingEnabled:YES];
[YMAMobileAds setAgeRestrictedUser:NO];
[YMAMobileAds setUserConsent:YES];
NSString *version = YMAMobileAds.sdkVersion;
[YMAYandexAds setLocationTracking:YES];
[YMAYandexAds setAgeRestricted:NO];
[YMAYandexAds setUserConsent:YES];
NSString *version = YMAYandexAds.sdkVersion.stringValue;

7. Изменения в делегатах рекламных объектов

Методы делегатов AppOpenAdDelegate, InterstitialAdDelegate, RewardedAdDelegate, NativeAdDelegate, SliderAdDelegate больше не опциональны — все методы теперь обязательны для реализации.

Методы показа

Класс SDK 7 SDK 8 Статус
RewardedAdDelegate rewardedAdDelegate(_:didFailToShowWithError:) rewardedAdDelegate(_:didFailToShow:) Переименован
InterstitialAdDelegate interstitialAdDelegate(_:didFailToShowWithError:) interstitialAdDelegate(_:didFailToShow:) Переименован
AppOpenAdDelegate appOpenAdDelegate(_:didFailToShowWithError:) appOpenAdDelegate(_:didFailToShow:) Переименован

Методы отслеживания показов

Класс SDK 7 SDK 8 Статус
NativeAdDelegate nativeAd(_:didTrackImpressionWith:) nativeAd(_:didTrackImpression:) Переименован
RewardedAdDelegate rewardedAdDelegate(_:didTrackImpressionWith:) rewardedAdDelegate(_:didTrackImpression:) Переименован
InterstitialAdDelegate interstitialAdDelegate(_:didTrackImpressionWith:) interstitialAdDelegate(_:didTrackImpression:) Переименован
AppOpenAdDelegate appOpenAdDelegate(_:didTrackImpressionWith:) appOpenAdDelegate(_:didTrackImpression:) Переименован
SliderAdDelegate sliderAdDelegate(_:didTrackImpressionWith:) sliderAdDelegate(_:didTrackImpression:) Переименован

Удалённые методы делегатов

Делегат Метод Статус
AdViewDelegate close(_:) Удалён
AdViewDelegate viewControllerForPresentingModalView() Удалён
AdViewDelegate adViewWillLeaveApplication Удалён
AdViewDelegate adView(_:willPresentScreen:) Удалён
AdViewDelegate adView(_:didDismissScreen:) Удалён
NativeAdDelegate close(_:) Удалён
NativeAdDelegate viewControllerForPresentingModalView() Удалён
NativeAdDelegate nativeAdWillLeaveApplication Удалён
NativeAdDelegate nativeAd(_:willPresentScreen:) Удалён
NativeAdDelegate nativeAd(_:didDismissScreen:) Удалён
SliderAdDelegate sliderAdDidClose(_:) Удалён
SliderAdDelegate sliderAdWillLeaveApplication Удалён
SliderAdDelegate sliderAd(_:willPresentScreen:) Удалён
SliderAdDelegate sliderAd(_:didDismissScreen:) Удалён

8. Изменения в Native Ads: Warning

Тип поля warning в NativeAdAssets изменён с String? на NativeAdWarning?. Добавлено поле minimumRequiredArea в NativeAdWarning, которое содержит информацию о минимальной требуемой части рекламной области ассета warning.

Класс SDK 7 SDK 8 Статус
NativeAdAssets warning: String? warning: NativeAdWarning? Изменён тип
NativeAdWarning value: String Добавлено
NativeAdWarning minimumRequiredArea: Double Добавлено

Примеры

Swift
SDK 7 SDK 8
let warningText: String? = nativeAd.adAssets.warning
label.text = warningText
let warning: NativeAdWarning? = nativeAd.adAssets.warning
label.text = warning?.value
Objective-C
SDK 7 SDK 8
NSString *warningText = nativeAd.adAssets.warning;
label.text = warningText;
YMANativeAdWarning *warning = nativeAd.adAssets.warning;
label.text = warning.value;

9. Изменения в Native Ads: Media

Добавлено свойство hasVideo в NativeAdMedia.

Класс Свойство Статус
NativeAdMedia hasVideo: Bool Добавлено

Примеры

Swift
// SDK 8
if let media = nativeAd.adAssets.media, media.hasVideo {
    // Учесть наличие видео в рекламе
}
Objective-C
// SDK 8
if (nativeAd.adAssets.media != nil && nativeAd.adAssets.media.hasVideo) {
    // Учесть наличие видео в рекламе
}

10. Изменения в NativeAd и SliderAd: loadImages

Метод loadImages() переименован в loadImages(completionHandler:). Параметр completionHandler заменяет протокол-наблюдатель NativeAdImageLoadingObserver. Также добавлена асинхронная версия loadImages().

Класс SDK 7 SDK 8 Статус
NativeAd loadImages() + NativeAdImageLoadingObserver loadImages(completionHandler:) / loadImages() (async) Изменён
SliderAd loadImages() + NativeAdImageLoadingObserver loadImages(completionHandler:) / loadImages() (async) Изменён
NativeAdImageLoadingObserver Удалён

Применимо к: NativeAd, SliderAd.

Примеры

Swift
SDK 7 SDK 8
// NativeAd
nativeAd.addImageLoadingObserver(self)
nativeAd.loadImages()

// SliderAd
sliderAd.addImageLoadingObserver(self)
sliderAd.loadImages()
// NativeAd (completion handler)
nativeAd.loadImages { [weak self] in
    // ресурсы загружены
}

// NativeAd (async/await)
await nativeAd.loadImages()

// SliderAd (completion handler)
sliderAd.loadImages { [weak self] in
    // ресурсы загружены
}

// SliderAd (async/await)
await sliderAd.loadImages()
Objective-C
SDK 7 SDK 8
// NativeAd
[nativeAd addImageLoadingObserver:self];
[nativeAd loadImages];

// SliderAd
[sliderAd addImageLoadingObserver:self];
[sliderAd loadImages];
// NativeAd
[nativeAd loadImagesWithCompletionHandler:^{
    // ресурсы загружены
}];

// SliderAd
[sliderAd loadImagesWithCompletionHandler:^{
    // ресурсы загружены
}];

11. Удаление VideoController

Свойство videoController и связанные классы VideoController, VideoDelegate удалены.

Класс Свойство/Метод Статус
AdView / BannerAdView videoController Удалено
VideoController Удалён
VideoDelegate Удалён

12. Удаление нативных шаблонов

Нативные шаблоны полностью удалены. Все связанные классы больше не доступны.

Удалённые классы
NativeTemplateAppearance
MutableNativeTemplateAppearance
NativeTemplateHorizontalOffset
NativeBannerView
ButtonAppearance
MutableButtonAppearance
ImageAppearance
MutableImageAppearance
LabelAppearance
MutableLabelAppearance
RatingAppearance
MutableRatingAppearance
SizeConstraint
MutableSizeConstraint
SizeConstraintType
YMAHorizontalOffset

13. Удалённые константы и типы ошибок

SDK 7 SDK 8 Статус
kYMAAdsErrorDomain Удалена
kYMANativeAdErrorDomain Удалена
kYMAGenderFemale, kYMAGenderMale Gender Заменены классом
Константы из YMAVersion YandexAds.sdkVersion.stringValue Изменено
MobileAds.sdkVersion YandexAds.sdkVersion.stringValue Изменено
AdErrorCode Удалён
NativeErrorCode Удалён
Version.prereleaseIdentifiers Удалено
Version.buildMetadataIdentifiers Удалено
isYandexMobileAdsError (на Error/NSError) Удалено
isYandexMobileNativeAdsError (на Error/NSError) Удалено

14. Swift 6, MainActor и Sendable

SDK собирается с использованием Swift 6. Ряд классов и протоколов теперь изолирован на MainActor, а один протокол требует Sendable.

MainActor-изолированные классы

Класс
AppOpenAd
InterstitialAd
RewardedAd
AudioSessionManager
NativeVideoPlaybackControls

MainActor-изолированные протоколы

Протокол
AppOpenAdDelegate
InterstitialAdDelegate
RewardedAdDelegate
NativeAd
NativeAdDelegate
SliderAd
SliderAdDelegate
BannerAdViewDelegate

Протокол NativeAdImageLoadingObserver удалён — загрузка изображений обрабатывается через completion handler или async/await.


15. Другие изменения

Класс SDK 7 SDK 8 Статус
Rating setRating(_:) / rating() Rating.rating (свойство) Изменён
NativeAd bind(toSliderView:) SliderAd.bind(with:) Перенесён
NativeVideoPlaybackProgressControl reset Удалён
MobileAds audioSessionManager() YandexAds.audioSessionManager (свойство) Изменён

Примеры

Swift
SDK 7 SDK 8
rating.setRating(4.5)
let value = rating.rating()

let audioManager = MobileAds.audioSessionManager()
rating.rating = 4.5

let audioManager = YandexAds.audioSessionManager
Objective-C
SDK 7 SDK 8
[rating setRating:4.5];
CGFloat value = [rating rating];

YMAAudioSessionManager *audioManager = [YMAMobileAds audioSessionManager];
rating.rating = 4.5;

YMAAudioSessionManager *audioManager = YMAYandexAds.audioSessionManager;


Изменения в API медиационных сетей

1. Изменения в AdapterIdentity для медиационных адаптеров

Добавлен новый механизм идентификации медиационных адаптеров через AdapterIdentity. Параметр mediationNetworkName больше не используется. Идентификация адаптера задаётся глобально через YandexAds.setAdapterIdentity(_:) перед инициализацией SDK.

Класс SDK 7 SDK 8 Статус
BidderTokenLoader BidderTokenLoader(mediationNetworkName:) BidderTokenLoader() Изменён
YandexAds MobileAds.initialize() YandexAds.setAdapterIdentity(_:) + YandexAds.initializeSDK() Изменён
AdapterIdentity AdapterIdentity(adapterNetworkName:adapterVersion:adapterNetworkVersion:) Добавлен

Примеры

Swift
SDK 7 SDK 8
let tokenLoader = BidderTokenLoader(mediationNetworkName: "AdMob")
let config = BidderTokenRequestConfiguration(adType: .interstitial)
tokenLoader.loadBidderToken(requestConfiguration: config) { ... }

MobileAds.initialize()
let tokenLoader = BidderTokenLoader()
let request = BidderTokenRequest.interstitial()
tokenLoader.loadBidderToken(request: request) { ... }

let adapterIdentity = AdapterIdentity(
    adapterNetworkName: "AdMob",
    adapterVersion: "1.0.0",
    adapterNetworkVersion: "23.5.0"
)
YandexAds.setAdapterIdentity(adapterIdentity)
YandexAds.initializeSDK()
Objective-C
SDK 7 SDK 8
YMABidderTokenLoader *tokenLoader =
    [[YMABidderTokenLoader alloc] initWithMediationNetworkName:@"AdMob"];
YMABidderTokenRequestConfiguration *config =
    [[YMABidderTokenRequestConfiguration alloc] initWithAdType:YMAAdTypeInterstitial];
[tokenLoader loadBidderTokenWithRequestConfiguration:config
                                   completionHandler:^(NSString *token) { ... }];

[YMAMobileAds initialize];
YMABidderTokenLoader *tokenLoader = [[YMABidderTokenLoader alloc] init];
YMABidderTokenRequest *request = [YMABidderTokenRequest interstitial];
[tokenLoader loadBidderTokenWithRequest:request
                      completionHandler:^(NSString *token) { ... }];

YMAAdapterIdentity *identity =
    [[YMAAdapterIdentity alloc] initWithAdapterNetworkName:@"AdMob"
                                           adapterVersion:@"1.0.0"
                                    adapterNetworkVersion:@"23.5.0"];
[YMAYandexAds setAdapterIdentity:identity];
[YMAYandexAds initializeSDK];

2. Изменения в BidderTokenRequest

Класс BidderTokenRequestConfiguration переименован в BidderTokenRequest. Инициализатор и публичные свойства (targetInfo, bannerAdSize, parameters) перенесены в параметры фабричных методов.

Класс SDK 7 SDK 8 Статус
BidderTokenRequestConfiguration BidderTokenRequest Переименован
BidderTokenRequestConfiguration init(adType: .banner) + .bannerAdSize BidderTokenRequest.banner(size:targeting:parameters:) Изменён
BidderTokenRequestConfiguration init(adType: .interstitial) + .targetInfo BidderTokenRequest.interstitial(targeting:parameters:) Изменён
BidderTokenRequestConfiguration init(adType: .rewarded) + .targetInfo BidderTokenRequest.rewarded(targeting:parameters:) Изменён
BidderTokenRequestConfiguration init(adType: .native) + .targetInfo BidderTokenRequest.native(targeting:parameters:) Изменён
BidderTokenRequestConfiguration init(adType: .appOpenAd) + .targetInfo BidderTokenRequest.appOpenAd(targeting:parameters:) Изменён
BidderTokenLoader loadBidderToken(requestConfiguration:completionHandler:) loadBidderToken(request:completionHandler:) Переименован

Применимо к: Адаптеры медиации, использующие BidderTokenLoader.

Примеры

Swift
SDK 7 SDK 8
let config = BidderTokenRequestConfiguration(adType: .banner)
config.bannerAdSize = adSize
config.targetInfo = adTargetInfo
tokenLoader.loadBidderToken(requestConfiguration: config) { ... }
let targeting = AdTargeting()
let request = BidderTokenRequest.banner(
    size: adSize,
    targeting: targeting,
    parameters: ["key": "value"]
)
tokenLoader.loadBidderToken(request: request) { ... }

// Другие типы рекламы:
let interstitialRequest = BidderTokenRequest.interstitial()
let rewardedRequest = BidderTokenRequest.rewarded()
let nativeRequest = BidderTokenRequest.native()
let appOpenRequest = BidderTokenRequest.appOpenAd()
Objective-C
SDK 7 SDK 8
YMABidderTokenRequestConfiguration *config =
    [[YMABidderTokenRequestConfiguration alloc] initWithAdType:YMAAdTypeBanner];
config.bannerAdSize = adSize;
config.targetInfo = adTargetInfo;
[tokenLoader loadBidderTokenWithRequestConfiguration:config
                                   completionHandler:^(NSString *token) { ... }];
YMAAdTargeting *targeting = [[YMAAdTargeting alloc] initWithAge:nil
                                                         gender:nil
                                                       location:nil
                                                   contextQuery:nil
                                                    contextTags:nil];
YMABidderTokenRequest *request = [YMABidderTokenRequest bannerWithSize:adSize
                                                              targeting:targeting
                                                            parameters:@{@"key": @"value"}];
[tokenLoader loadBidderTokenWithRequest:request
                      completionHandler:^(NSString *token) { ... }];

// Другие типы рекламы:
YMABidderTokenRequest *interstitialRequest = [YMABidderTokenRequest interstitial];
YMABidderTokenRequest *rewardedRequest = [YMABidderTokenRequest rewarded];
YMABidderTokenRequest *nativeRequest = [YMABidderTokenRequest native];
YMABidderTokenRequest *appOpenRequest = [YMABidderTokenRequest appOpenAd];

SwiftUI интеграция

Поддержана интеграция через SwiftUI. См. раздел SwiftUI в конце меню документации iOS:


Миграция с помощью AI-инструментов (beta)

Для упрощения процесса миграции с SDK 7.x на 8.x вы можете использовать AI-ассистенты с готовым скиллом миграции.

Как использовать

  1. Загрузите скилл

Скилл для миграции доступен в GitHub Yandex Ads SDK iOS.

  • Для Claude Desktop

скопируйте папку скилла в директорию skills вашего агента, например:

cp -r Skills/migrate-yandex-ads-sdk-from-7-to-8 .claude/skills/
  • Для Cursor IDE

скопируйте папку скилла в ваш проект и используйте ссылку на файл SKILL.md через @, например:

@migrate-yandex-ads-sdk-from-7-to-8/SKILL.md
  • Альтернативный способ: скопируйте содержимое SKILL.md и всех связанных файлов в диалог с AI-ассистентом (однако может превысить лимиты сообщения).
  1. Используйте промпт

После загрузки скилла используйте следующий промпт в диалоге с AI-ассистентом:

Мигрируй мой проект с Yandex Mobile Ads SDK 7.x на 8.x

Важно

Всегда тщательно проверяйте изменения, сгенерированные AI.

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


Требования

  • Xcode: 26.0 и выше
  • AppMetricaCore: 6.0.0 и выше
  • AppMetricaLibraryAdapter: 6.0.0 и выше
  • AppMetricaAdSupport: 6.0.0 и выше
  • AppMetricaIDSync: 6.0.0 и выше