Руководство по миграции на версию 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 |
let configuration = AdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
interstitialAdLoader.delegate = self
interstitialAdLoader.loadAd(with: configuration)
let nativeConfiguration = NativeAdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
nativeAdLoader.delegate = self
nativeAdLoader.loadAd(with: nativeConfiguration)
|
let request = AdRequest(adUnitID: "R-M-XXXXX-YY")
interstitialAdLoader.loadAd(with: request) { result in
switch result {
case .success(let ad):
case .failure(let error):
}
}
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 |
YMAAdRequestConfiguration *configuration =
[[YMAAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
interstitialAdLoader.delegate = self;
[interstitialAdLoader loadAdWithConfiguration:configuration];
YMANativeAdRequestConfiguration *nativeConfig =
[[YMANativeAdRequestConfiguration alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
nativeAdLoader.delegate = self;
[nativeAdLoader loadAdWithConfiguration:nativeConfig];
|
YMAAdRequest *request =
[[YMAAdRequest alloc] initWithAdUnitID:@"R-M-XXXXX-YY"];
[interstitialAdLoader loadAdWithRequest:request
completionHandler:^(YMAInterstitialAd * _Nullable ad,
NSError * _Nullable error) {
if (ad) {
} else {
}
}];
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")
let interstitialAd = try await interstitialAdLoader.loadAd(with: request)
let rewardedAd = try await rewardedAdLoader.loadAd(with: request)
let appOpenAd = try await appOpenAdLoader.loadAd(with: request)
let options = NativeAdOptions()
let nativeAd = try await nativeAdLoader.loadAd(with: request, options: options)
let sliderAd = try await sliderAdLoader.loadAd(with: request, options: options)
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 |
let attributes = nativeAd.adAttributes
let info = nativeAd.info
let creativeID = interstitialAd.creativeID
let campaignID = interstitialAd.campaignID
let adUnitId = interstitialAd.adInfo.adUnitId
let size = bannerAdView.adInfo.adSize
|
let creatives = nativeAd.adInfo.creatives
let extraData = nativeAd.adInfo.extraData
if let creative = interstitialAd.adInfo.creatives.first {
let creativeID = creative.creativeID
let campaignID = creative.campaignID
let placeID = creative.placeID
let offerID = creative.offerID
}
let adUnitID = interstitialAd.adInfo.adUnitID
let partnerText = interstitialAd.adInfo.partnerText
|
Objective-C
| SDK 7 | SDK 8 |
NSArray *attributes = nativeAd.adAttributes;
NSDictionary *info = nativeAd.info;
NSString *creativeID = interstitialAd.creativeID;
NSString *campaignID = interstitialAd.campaignID;
NSString *adUnitId = interstitialAd.adInfo.adUnitId;
YMAAdSize *size = bannerAdView.adInfo.adSize;
|
NSArray<YMACreative *> *creatives = nativeAd.adInfo.creatives;
NSDictionary *extraData = nativeAd.adInfo.extraData;
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;
}
NSString *adUnitID = interstitialAd.adInfo.adUnitID;
NSString *partnerText = interstitialAd.adInfo.partnerText;
|
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;
|
Добавлено свойство hasVideo в NativeAdMedia.
| Класс |
Свойство |
Статус |
NativeAdMedia |
hasVideo: Bool |
Добавлено |
Примеры
Swift
if let media = nativeAd.adAssets.media, media.hasVideo {
}
Objective-C
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.addImageLoadingObserver(self)
nativeAd.loadImages()
sliderAd.addImageLoadingObserver(self)
sliderAd.loadImages()
|
nativeAd.loadImages { [weak self] in
}
await nativeAd.loadImages()
sliderAd.loadImages { [weak self] in
}
await sliderAd.loadImages()
|
Objective-C
| SDK 7 | SDK 8 |
[nativeAd addImageLoadingObserver:self];
[nativeAd loadImages];
[sliderAd addImageLoadingObserver:self];
[sliderAd loadImages];
|
[nativeAd loadImagesWithCompletionHandler:^{
}];
[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;
|
Добавлен новый механизм идентификации медиационных адаптеров через 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-ассистенты с готовым скиллом миграции.
Как использовать
- Загрузите скилл
Скилл для миграции доступен в GitHub Yandex Ads SDK iOS.
скопируйте папку скилла в директорию skills вашего агента, например:
cp -r Skills/migrate-yandex-ads-sdk-from-7-to-8 .claude/skills/
скопируйте папку скилла в ваш проект и используйте ссылку на файл SKILL.md через @, например:
@migrate-yandex-ads-sdk-from-7-to-8/SKILL.md
- Альтернативный способ: скопируйте содержимое
SKILL.md и всех связанных файлов в диалог с AI-ассистентом (однако может превысить лимиты сообщения).
- Используйте промпт
После загрузки скилла используйте следующий промпт в диалоге с 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 и выше