Установка и настройка iOS SDK
Adapty SDK включает два ключевых модуля для бесшовной интеграции в ваше мобильное приложение:
- 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+
Установка SDK — это шаг 5 настройки Adapty. Прежде чем покупки заработают в вашем приложении, вам также нужно подключить приложение к сторам, а затем создать продукты, пейвол и плейсмент в дашборде Adapty. Гайд по быстрому старту описывает все необходимые шаги.
Установка Adapty SDK
Активация модуля Adapty в 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 уникальны для каждого приложения, поэтому при наличии нескольких приложений убедитесь, что выбрали правильный ключ.
Теперь настройте пейволы в вашем приложении:
- Если вы используете Adapty Paywall Builder, сначала активируйте модуль AdaptyUI ниже, затем следуйте быстрому старту с Paywall Builder.
- Если вы создаёте собственный UI для пейвола, см. быстрый старт для кастомных пейволов.
Активация модуля AdaptyUI в Adapty SDK
Если вы планируете использовать Paywall Builder и установили модуль AdaptyUI, вам также нужно активировать 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 в pod-таргетах Adapty. Типичные симптомы: несоответствия @Sendable в AdaptyUIBuilderLogic, отсутствие соответствия Sendable у типов Adapty или ошибки изоляции акторов.
В подах Adapty объявлено s.swift_version = '6.0', и для их сборки требуется Swift 6. Код вашего приложения может оставаться на Swift 5 — Swift 6 нужен только для целей подов Adapty (Adapty, AdaptyUI, AdaptyUIBuilder, AdaptyLogger).
Самая распространённая причина проблемы — хук 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.