Установка и настройка iOS SDK
SDK Adapty включает два ключевых модуля для бесшовной интеграции в ваше мобильное приложение:
- Core Adapty: Основной SDK, необходимый для работы Adapty в вашем приложении.
- AdaptyUI: Опциональный модуль, нужный при использовании Adapty Paywall Builder — удобного no-code инструмента для создания кросс-платформенных пейволов.
Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Загляните в наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другую базовую функциональность.
Для полного пошагового разбора реализации можно также посмотреть видео:
Требования
Хотя SDK технически поддерживает iOS 13.0+ для основного модуля, на практике необходим iOS 15.0+, поскольку:
- Все функции StoreKit 2 требуют iOS 15.0+
- Модуль AdaptyUI поддерживается только на iOS 15.0+
Adapty SDK 3.15.7+ обязателен при сборке в Xcode 26.4 и более новых версиях.
Установка SDK — это шаг 5 настройки Adapty. Прежде чем покупки заработают в вашем приложении, вам также нужно подключить приложение к сторам, а затем создать продукты, пейвол и плейсмент в дашборде Adapty. Гайд по быстрому старту описывает все необходимые шаги.
Установка Adapty SDK
Активация модуля Adapty в SDK
Активируйте Adapty SDK в коде вашего приложения.
Adapty SDK нужно активировать только один раз в приложении.
Чтобы получить Public SDK Key:
- Откройте дашборд Adapty и перейдите в App settings → General.
- В разделе Api keys скопируйте Public SDK Key (не Secret Key).
- Замените
"YOUR_PUBLIC_SDK_KEY"в коде на скопированный ключ.
- Используйте Public SDK key для инициализации Adapty. Secret key предназначен только для серверного API.
- SDK keys уникальны для каждого приложения, поэтому при наличии нескольких приложений убедитесь, что выбрали правильный ключ.
Дождитесь завершения activate перед вызовом любых других методов Adapty SDK. Полная последовательность описана в Порядок вызовов в iOS SDK.
Теперь настройте пейволы в вашем приложении:
- Если вы используете Adapty Paywall Builder, сначала активируйте модуль AdaptyUI ниже, затем следуйте быстрому старту с Paywall Builder.
- Если вы создаёте собственный интерфейс пейвола, ознакомьтесь с быстрым стартом для кастомных пейволов.
Активация модуля AdaptyUI из SDK Adapty
Если вы планируете использовать Paywall Builder и уже установили модуль AdaptyUI, его необходимо также активировать.
В коде необходимо активировать основной модуль Adapty перед активацией AdaptyUI.
При желании, активируя AdaptyUI, вы можете переопределить настройки кэширования пейволов по умолчанию.
Дополнительная настройка
Логирование
Настройка системы логирования
Adapty записывает ошибки и другую важную информацию, чтобы помочь вам разобраться в происходящем. Доступны следующие уровни логирования:
| Уровень | Описание |
|---|---|
error | Логируются только ошибки |
warn | Логируются ошибки и сообщения от SDK, которые не вызывают критических ошибок, но заслуживают внимания |
info | Логируются ошибки, предупреждения и различные информационные сообщения |
verbose | Логируется любая дополнительная информация, которая может быть полезна при отладке: вызовы функций, API-запросы и т. д. |
let configurationBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(logLevel: .verbose) // recommended for development
Перенаправление сообщений системы логирования
Если вам нужно отправлять лог-сообщения Adapty в вашу систему или сохранять их в файл, используйте метод setLogHandler и реализуйте в нём свою логику логирования. Этот обработчик получает записи логов, содержащие текст сообщения и уровень серьёзности.
Adapty.setLogHandler { record in
writeToLocalFile("Adapty \(record.level): \(record.message)")
}
Политики обработки данных
Adapty не хранит персональные данные пользователей, если вы явно их не передаёте. При этом вы можете настроить дополнительные политики безопасности данных для соответствия требованиям стора или законодательства конкретной страны.
Отключение сбора и передачи IDFA
При активации модуля Adapty установите idfaCollectionDisabled в true, чтобы отключить сбор и передачу IDFA.
Используйте этот параметр, чтобы соответствовать правилам App Store Review Guidelines или избежать появления запроса App Tracking Transparency, если IDFA не нужен вашему приложению. Значение по умолчанию — false. Подробнее о сборе IDFA читайте в разделе Интеграция аналитики.
let configurationBuilder =
AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(idfaCollectionDisabled: true)
Отключение сбора и передачи IP-адресов
При активации модуля Adapty установите ipAddressCollectionDisabled в true, чтобы отключить сбор и передачу IP-адресов пользователей. Значение по умолчанию — false.
Используйте этот параметр для повышения конфиденциальности пользователей, соответствия региональным требованиям защиты данных (например, GDPR или CCPA) или сокращения лишнего сбора данных, если функции на основе IP не нужны вашему приложению.
let configurationBuilder =
AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(ipAddressCollectionDisabled: true)
Настройка кэша медиа для пейволов в AdaptyUI
Обратите внимание, что конфигурация AdaptyUI необязательна. Вы можете активировать модуль AdaptyUI без конфига. Однако если вы используете конфиг, все параметры обязательны.
// Configure AdaptyUI
let adaptyUIConfiguration = AdaptyUI.Configuration(
mediaCacheConfiguration: .init(
memoryStorageTotalCostLimit: 100 * 1024 * 1024,
memoryStorageCountLimit: .max,
diskStorageSizeLimit: 100 * 1024 * 1024
)
)
// Activate AdaptyUI
AdaptyUI.activate(configuration: adaptyUIConfiguration)
Параметры:
| Параметр | Наличие | Описание |
|---|---|---|
| memoryStorageTotalCostLimit | обязательный | Максимальный размер хранилища в байтах. |
| memoryStorageCountLimit | обязательный | Максимальное количество элементов в памяти. |
| diskStorageSizeLimit | обязательный | Максимальный размер файлов на диске в байтах. 0 означает отсутствие ограничений. |
Поведение завершения транзакций
Эта функция доступна начиная с версии SDK 3.12.0.
По умолчанию Adapty автоматически завершает транзакции после успешной валидации. Однако если вам нужна расширенная валидация транзакций (например, серверная проверка чека, защита от мошенничества или пользовательская бизнес-логика), вы можете настроить SDK на ручное завершение транзакций.
let configurationBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(transactionsFinishBehavior: .manual) // .auto is the default
Подробнее о завершении транзакций читайте в гайде.
Очистка данных при восстановлении из резервной копии
Если clearDataOnBackup установлено в true, SDK обнаруживает восстановление приложения из резервной копии iCloud и удаляет все локально сохранённые данные SDK, включая кешированную информацию о профиле, продуктах и пейволах. После этого SDK инициализируется с чистым состоянием. Значение по умолчанию — false.
Удаляется только локальный кеш SDK. История транзакций в Apple и данные пользователя на серверах Adapty остаются без изменений.
let configurationBuilder = AdaptyConfiguration
.builder(withAPIKey: "YOUR_PUBLIC_SDK_KEY")
.with(clearDataOnBackup: true) // default – false
Устранение неполадок
Ошибка конкурентности Swift 6 с Tuist
При сборке с помощью Tuist могут появляться ошибки строгой конкурентности Swift 6. Типичные симптомы: несоответствие атрибута @Sendable в AdaptyUIBuilderLogic или аналогичные ошибки Sendability между модулями.
Это происходит потому, что Tuist генерирует проекты Xcode из пакетов SPM, но не сохраняет настройку swift-tools-version: 6.0. В результате некоторые таргеты Adapty (Adapty, AdaptyUI, AdaptyUIBuilder) компилируются по правилам Swift 5, тогда как другие используют Swift 6, что приводит к несовпадениям @Sendable между модулями.
Решение: обновитесь до Adapty SDK 3.15.5 или более поздней версии — это устраняет проблему вне зависимости от смешанных версий Swift.
Обходной путь: если обновление невозможно, явно задайте Swift 6 для всех трёх таргетов Adapty в конфигурации Tuist:
targetSettings: [
"Adapty": .init().swiftVersion("6"),
"AdaptyUI": .init().swiftVersion("6"),
"AdaptyUIBuilder": .init().swiftVersion("6"),
]
Ошибки сборки Swift 6, вызванные переопределением SWIFT_VERSION в Podfile
При сборке для iOS с CocoaPods могут появляться ошибки компиляции Swift 6 в целевых объектах пода Adapty. Типичные симптомы: несоответствия @Sendable в AdaptyUIBuilderLogic, отсутствие соответствия Sendable у типов Adapty или ошибки изоляции актора.
Поды Adapty объявляют s.swift_version = '6.0' и требуют Swift 6 для сборки. Ваш собственный код приложения может оставаться на Swift 5 — только целевые поды (Adapty, AdaptyUI, AdaptyUIBuilder, AdaptyLogger) должны собираться с Swift 6.
Самая распространённая причина — хук post_install в вашем Podfile, который перезаписывает SWIFT_VERSION для каждого подового таргета:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5.9'
end
end
end
Исправление: Исключите pod-таргеты Adapty из переопределения:
post_install do |installer|
installer.pods_project.targets.each do |target|
next if %w[Adapty AdaptyUI AdaptyUIBuilder AdaptyLogger].include?(target.name)
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5.9'
end
end
end
Затем выполните pod install и пересоберите проект.
Для проверки откройте Pods.xcodeproj, выберите pod-таргет Adapty → Build Settings → Swift Language Version. Должно быть указано Swift 6.