Установка и настройка 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 устанавливается через Swift Package Manager. В Xcode перейдите в File -> Add Package Dependency…. Обратите внимание, что шаги по добавлению зависимостей могут отличаться в разных версиях Xcode — при необходимости обратитесь к документации Xcode.
- Введите URL репозитория:
https://github.com/adaptyteam/AdaptySDK-iOS.git - Выберите версию (рекомендуется последняя стабильная) и нажмите Add Package.
- В окне Choose Package Products выберите нужные модули:
- Adapty (основной модуль)
- AdaptyUI (опционально — только если планируете использовать Paywall Builder)
Примечание:
- Чтобы включить режим Kids, выберите Adapty_KidsMode вместо Adapty.
- Не выбирайте другие пакеты из списка — они вам не понадобятся.
- Нажмите Add Package, чтобы завершить установку.
- Проверьте установку: в навигаторе проекта вы должны увидеть «Adapty» (и «AdaptyUI», если он был выбран) в разделе Package Dependencies.
Adapty iOS SDK 4.0 — это пре-релиз. Swift Package Manager не разрешает бета-версии через правило Up to Next Major Version (from:), поэтому необходимо указать точную версию. В Xcode установите Dependency Rule в значение Exact Version и введите 4.0.0-beta.1. В Package.swift используйте .exact("4.0.0-beta.1"). Подробнее: Миграция iOS SDK Adapty на v4.
Активация модуля 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.
- Если вы создаёте собственный UI пейвола, см. быстрый старт для кастомных пейволов.
Активация модуля AdaptyUI в составе Adapty SDK
Если вы планируете использовать 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 | required | Общий лимит стоимости хранилища в байтах. |
| memoryStorageCountLimit | required | Лимит количества элементов в памяти. |
| diskStorageSizeLimit | required | Лимит размера файла на диске в байтах. 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"),
]