- Основные изменения
- 1. Изменения в AdRequest
- 2. Изменения в Targeting
- 3. Изменения в загрузчиках рекламы
- 3.1 Поддержка Structured Concurrency
- 4. Изменения в Banner API
- 5. Изменения в AdInfo
- 6. Изменения в основном классе SDK
- 7. Изменения в делегатах рекламных объектов
- 8. Изменения в Native Ads: Warning
- 9. Изменения в Native Ads: Media
- 10. Изменения в NativeAd и SliderAd: loadImages
- 11. Удаление VideoController
- 12. Удаление нативных шаблонов
- 13. Удаленные константы и типы ошибок
- 14. Swift 6, MainActor и Sendable
- 15. Другие изменения
- Изменения в API медиационных сетей
- SwiftUI интеграция
- Миграция с помощью AI-инструментов
- SKAdNetwork
- Требования
Руководство по миграции на версию 8
8-я версия Yandex Mobile Ads SDK вносит в API ряд изменений, направленных на улучшение пользовательского опыта разработчиков.
Если ваш проект реализован на Objective-C, обратите внимание на пункт 14 с MainActor, для корректной обработки MainActor-изолированные классов. Осуществляйте работу с ними на главном потоке.
Основные изменения
1. Изменения в AdRequest
- Используйте
AdRequestдля всех типов рекламы. - Классы
AdRequestConfiguration,NativeAdRequestConfigurationи все Mutable-классы запросов удалены. - Свойство
adUnitIDтеперь передается как обязательный параметр инициализацииAdRequest.
|
Класс |
Статус |
|
|
Удален. Используйте |
|
|
Удален. Используйте |
|
|
Удален |
|
|
Удален |
|
|
Удален |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
2. Изменения в Targeting
- Поля
age,gender,location,contextQueryиcontextTagsудалены изAdRequest. - Для управления параметрами таргетинга используйте новый класс
AdTargeting.
Класс AdTargetInfo переименован в AdTargeting, поле targetInfo в AdRequestTokenConfiguration и BidderTokenRequestConfiguration переименовано в targeting.
|
Класс |
Статус |
|
|
Переименован в |
|
Класс |
Свойство |
Статус |
|
|
|
Удалено. Используйте |
|
|
Удалено. Используйте |
|
|
|
Удалено. Используйте |
|
|
|
Удалено. Используйте |
|
|
|
Удалено. Используйте |
|
|
|
Добавлено |
|
|
|
|
Переименовано в |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
3. Изменения в загрузчиках рекламы
- Делегаты загрузки удалены — вместо них результат загрузки приходит в
completionhandler. - Параметр
adUnitIDтеперь передается черезAdRequest.
|
Класс |
Загрузчик |
Статус |
|
|
|
Заменен на |
|
|
|
Заменен на |
|
|
|
Заменен на |
|
|
|
Заменен на |
|
|
|
Заменен на |
|
|
|
Заменен на |
|
Класс |
Статус |
|
|
Удален |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
3.1 Поддержка Structured Concurrency
Добавлена поддержка Swift Structured Concurrency (async/await) во всех загрузчиках рекламы.
|
Загрузчик |
Метод |
Статус |
|
|
|
Добавлен |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Примеры
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)
Structured Concurrency доступен только в Swift.
4. Изменения в Banner API
- Класс
AdViewпереименован вBannerAdView, протоколAdViewDelegate— вBannerAdViewDelegate. - Свойство
adUnitIDудалено изBannerAdView— теперьadUnitIDпередается в конструкторAdRequestперед каждой загрузкой. - Фабричные методы
BannerAdSizeпереименованы.
|
Класс |
Статус |
|
|
Переименован в |
|
|
Переименован в |
|
Класс |
Свойство |
Статус |
|
|
|
Переименовано в |
|
|
Переименовано в |
|
|
|
Переименовано в |
|
|
|
Переименовано в |
|
|
|
Заменено на |
|
|
|
Заменено на |
|
|
|
Удалено |
|
|
|
Заменено на |
|
|
|
|
Переименовано в |
|
|
Переименовано в |
|
|
|
Переименовано в |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
5. Изменения в AdInfo
- Свойства рекламных объектов
info,adAttributes,creativeID,campaignIDудалены. - Используйте
adInfo. Также изменены имена некоторых свойствadInfo.
|
Класс |
Свойство |
Статус |
|
|
|
Переименовано в |
|
|
Переименовано в |
|
|
|
Удалено |
|
|
|
Добавлено |
|
|
|
|
Заменено на |
|
|
Заменено на |
|
|
|
Заменено на |
|
|
|
Заменено на |
|
|
|
|
Добавлено |
|
|
Добавлено |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
6. Изменения в основном классе SDK
- Класс
MobileAdsпереименован вYandexAds. - Privacy-методы и свойства перенесены в новый класс с обновленными именами.
|
Класс |
Статус |
|
|
Переименован в |
|
|
Заменен на |
|
|
Переименован в |
|
|
Переименован в |
|
|
Перенесен в |
|
|
Переименован в |
|
|
Переименован в |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
7. Изменения в делегатах рекламных объектов
Методы делегатов AppOpenAdDelegate, InterstitialAdDelegate, RewardedAdDelegate, NativeAdDelegate, SliderAdDelegate больше не опциональны — все методы теперь обязательны для реализации.
Методы показа
|
Класс |
Метод |
Статус |
|
|
|
Переименован в
|
|
|
|
Переименован в
|
|
|
|
Переименован в
|
Методы отслеживания показов
|
Класс |
Метод |
Статус |
|
|
|
Переименован в
|
|
|
|
Переименован в
|
|
|
|
Переименован в
|
|
|
|
Переименован в
|
|
|
|
Переименован в
|
Удаленные методы делегатов
|
Делегат |
Метод |
Статус |
|
|
|
Удален |
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
8. Изменения в Native Ads: Warning
- Тип поля
warningвNativeAdAssetsизменен сString?наNativeAdWarning?. - Добавлено поле
minimumRequiredAreaвNativeAdWarning, которое содержит информацию о минимальной требуемой части рекламной области ассетаwarning.
|
Класс |
Поле |
Статус |
|
|
|
Тип изменен на |
|
|
|
Добавлено |
|
|
Добавлено |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
9. Изменения в Native Ads: Media
Добавлено свойство hasVideo в NativeAdMedia.
|
Класс |
Свойство |
Статус |
|
|
|
Добавлено |
Примеры
// SDK 8
if let media = nativeAd.adAssets.media, media.hasVideo {
// Consider video content in ads
}
// SDK 8
if (nativeAd.adAssets.media != nil && nativeAd.adAssets.media.hasVideo) {
// Consider video content in ads
}
10. Изменения в NativeAd и SliderAd: loadImages
- Метод
loadImages()переименован вloadImages(completionHandler:). - Параметр
completionHandlerзаменяет протокол-наблюдательNativeAdImageLoadingObserver. - Добавлена асинхронная версия
loadImages().
|
Класс |
Статус |
|
|
Удален |
|
Класс |
Метод |
Статус |
|
|
|
Заменен на |
|
|
|
Заменен на |
Применимо к: NativeAd, SliderAd.
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
11. Удаление VideoController
Свойство videoController и связанные классы VideoController, VideoDelegate удалены.
|
Свойство |
Статус |
|
|
Удалено |
|
|
|
|
|
|
|
|
12. Удаление нативных шаблонов
Нативные шаблоны полностью удалены. Все связанные классы больше не доступны.
|
Шаблон |
Статус |
|
|
Удален |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13. Удаленные константы и типы ошибок
|
Константы и типы ошибок |
Статус |
|
|
Удалено |
|
|
Удалено |
|
|
Заменены классом |
|
Константы из |
Заменено на |
|
|
Заменено на |
|
|
Удалено |
|
|
Удалено |
|
|
Удалено |
|
|
Удалено |
|
|
Удалено |
|
|
Удалено |
14. Swift 6, MainActor и Sendable
- SDK собирается с использованием Swift 6.
- Ряд классов и протоколов теперь изолирован на
MainActor, а один протокол требуетSendable.
MainActor-изолированные классы
|
Класс |
|
|
|
|
|
|
|
|
|
|
MainActor-изолированные протоколы
|
Протокол |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Протокол NativeAdImageLoadingObserver удален — загрузка изображений обрабатывается через completion handler или async/await.
15. Другие изменения
|
Класс |
Объект |
Статус |
|
|
|
Заменен на свойство |
|
|
|
Перенесен в |
|
|
|
Удален |
|
|
|
Заменен на свойство |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
Изменения в API медиационных сетей
1. Изменения в AdapterIdentity для медиационных адаптеров
- Добавлен новый механизм идентификации медиационных адаптеров через
AdapterIdentity. - Параметр
mediationNetworkNameбольше не используется. - Идентификация адаптера задается глобально через
YandexAds.setAdapterIdentity(_:)перед инициализацией SDK.
|
Класс |
Параметр |
Статус |
|
|
|
Заменен на |
|
|
|
Заменен на |
|
|
|
Добавлен |
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
2. Изменения в BidderTokenRequest
- Класс
BidderTokenRequestConfigurationпереименован вBidderTokenRequest. - Инициализатор и публичные свойства (
targetInfo,bannerAdSize,parameters) перенесены в параметры фабричных методов.
|
Класс |
Статус |
|
|
Переименован в |
|
Класс |
Свойство |
Статус |
|
|
|
Заменено на
|
|
|
|
Заменено на
|
|
|
|
Заменено на
|
|
|
|
Заменено на
|
|
|
|
Заменено на
|
|
|
|
Переименовано в
|
Применимо к: Адаптеры медиации, использующие BidderTokenLoader.
Примеры
|
SDK 7 |
|
|
SDK 8 |
|
|
SDK 7 |
|
|
SDK 8 |
|
SwiftUI интеграция
Поддержана интеграция через SwiftUI. См. раздел SwiftUI в конце меню документации iOS:
- Адаптивный inline-баннер
- Адаптивный sticky-баннер
- Межстраничная реклама
- Реклама с вознаграждением
- Реклама при открытии приложения
Миграция с помощью AI-инструментов
Для упрощения процесса миграции с SDK 7.x на 8.x вы можете использовать AI-ассистентов с готовым скиллом миграции.
Как использовать
-
Загрузите скилл
Скилл для миграции доступен в GitHub Yandex Ads SDK iOS.
-
Для Claude Desktop
Cкопируйте папку скилла в директорию skills вашего агента, например:
cp -r Skills/migrate-yandex-ads-sdk-from-7-to-8 .claude/skills/ -
Для Cursor IDE
Cкопируйте папку скилла в ваш проект и используйте ссылку на файл
SKILL.mdчерез@, например:@migrate-yandex-ads-sdk-from-7-to-8/SKILL.md -
Альтернативный способ
Cкопируйте содержимое
SKILL.mdи всех связанных файлов в диалог с AI-ассистентом (однако это может превысить лимиты сообщения).
-
-
Используйте промпт
После загрузки скилла используйте следующий промпт в диалоге с AI-ассистентом:
Мигрируй мой проект с Yandex Mobile Ads SDK 7.x на 8.x
Всегда тщательно проверяйте изменения, сгенерированные AI.
Хотя скиллы помогают AI-ассистентам корректно выполнять задачи, вы должны лично проверять и верифицировать все изменения, внесенные агентом. AI-ассистенты могут допускать ошибки, поэтому ручная проверка кода необходима.
SKAdNetwork
Актуализирован список идентификаторов SKAdNetwork и добавлены инструменты для автоматизации его обновления. Подробнее о способах внедрения и использовании см. в разделе SKAdNetwork.
Требования
- Xcode: 26.0 и выше
- AppMetricaCore: 6.0.0 и выше
- AppMetricaLibraryAdapter: 6.0.0 и выше
- AppMetricaAdSupport: 6.0.0 и выше
- AppMetricaIDSync: 6.0.0 и выше