Установка и настройка 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

Release

Adapty SDK устанавливается через Swift Package Manager. В Xcode перейдите в File -> Add Package Dependency…. Шаги по добавлению пакетов могут различаться в зависимости от версии Xcode, поэтому при необходимости обращайтесь к документации Xcode.

  1. Введите URL репозитория:
    https://github.com/adaptyteam/AdaptySDK-iOS.git
  2. Выберите версию (рекомендуется последняя стабильная) и нажмите Add Package.
  3. В окне Choose Package Products выберите нужные модули:
    • Adapty (основной модуль)
    • AdaptyUI (опционально — только если планируете использовать Paywall Builder)

    Примечание:

    • Чтобы включить режим «Дети», выберите Adapty_KidsMode вместо Adapty.
    • Не выбирайте другие пакеты из списка — они вам не понадобятся.
  4. Нажмите Add Package, чтобы завершить установку.
  5. Проверьте установку: в навигаторе проекта вы должны увидеть «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:

  1. Откройте дашборд Adapty и перейдите в App settings → General.
  2. В разделе Api keys скопируйте Public SDK Key (НЕ Secret Key).
  3. Замените "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 keySecret key предназначен только для серверного API.
  • SDK-ключи уникальны для каждого приложения, поэтому если у вас несколько приложений, выберите нужный ключ.

Дождитесь завершения activate перед вызовом других методов Adapty SDK. Полная последовательность описана в разделе Порядок вызовов в iOS SDK.

Теперь настройте пейволы в вашем приложении:

Активация модуля 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)

Параметры:

ПараметрНаличиеОписание
memoryStorageTotalCostLimitrequiredОбщий лимит стоимости хранилища в байтах.
memoryStorageCountLimitrequiredЛимит количества элементов в памяти.
diskStorageSizeLimitrequiredЛимит размера файла на диске в байтах. 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"),
]