Установка и настройка 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)
Примечание:
- Чтобы включить режим «Дети», выберите Adapty_KidsMode вместо Adapty.
- Не выбирайте другие пакеты из списка — они вам не понадобятся.
- Нажмите Add Package, чтобы завершить установку.
- Проверьте установку: в навигаторе проекта вы должны увидеть «Adapty» (и «AdaptyUI», если был выбран) в разделе Package Dependencies.
Adapty iOS SDK 4.0 находится в стадии pre-release. 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"). См. Миграция Adapty iOS SDK на 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"в коде.
Или получите его программно с помощью Adapty CLI:
npm install -g adapty
adapty auth login
adapty apps list
Или напрямую:
npx adapty auth login
adapty apps list
- Убедитесь, что для инициализации Adapty вы используете Public SDK key — Secret key предназначен только для серверного API.
- SDK-ключи уникальны для каждого приложения, поэтому если у вас несколько приложений, выберите нужный ключ.
Дождитесь завершения activate перед вызовом других методов Adapty SDK. Полная последовательность описана в разделе Порядок вызовов в iOS SDK.
Теперь настройте пейволы в вашем приложении:
- Если вы используете Adapty Paywall Builder, сначала активируйте модуль AdaptyUI ниже, затем следуйте быстрому старту с Paywall Builder.
- Если вы создаёте собственный UI пейвола, см. быстрый старт для кастомных пейволов.
Активация модуля 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 | 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"),
]