Проверка статуса подписки в iOS SDK

С Adapty отслеживать статус подписки очень просто. Вам не нужно вручную прописывать идентификаторы продуктов в коде — достаточно проверить наличие активного уровня доступа, чтобы убедиться, что у пользователя есть подписка.

Перед тем как приступить к проверке статуса подписки, настройте App Store Server Notifications.

Уровень доступа и объект AdaptyProfile

Уровни доступа — это свойства объекта AdaptyProfile. Рекомендуем получать профиль при запуске приложения, например, когда вы идентифицируете пользователя, и обновлять его при каждом изменении. Так вы сможете использовать объект профиля, не запрашивая его повторно.

Чтобы получать уведомления об обновлениях профиля, подпишитесь на изменения профиля, как описано в разделе Подписка на обновления статуса подписки ниже.

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.

Получение уровня доступа с сервера

Чтобы получить уровень доступа с сервера, используйте метод .getProfile():

Параметры ответа:

ПараметрОписание
Profile

Объект AdaptyProfile. Как правило, для определения наличия у пользователя премиум-доступа достаточно проверить статус уровня доступа профиля.

Метод .getProfile возвращает максимально актуальные данные, поскольку всегда пытается обратиться к API. Если по какой-либо причине (например, из-за отсутствия подключения к интернету) Adapty SDK не может получить данные с сервера, возвращаются данные из кэша. Важно отметить, что Adapty SDK регулярно обновляет кэш AdaptyProfile, чтобы данные оставались как можно более актуальными.

Метод .getProfile() возвращает профиль пользователя, из которого можно получить статус уровня доступа. В одном приложении может быть несколько уровней доступа. Например, если у вас новостное приложение с независимыми подписками на разные темы, вы можете создать уровни доступа «sports» и «science». Однако в большинстве случаев достаточно одного уровня доступа — тогда можно просто использовать уровень «premium» по умолчанию.

Пример проверки уровня доступа «premium» по умолчанию:

Подписка на обновления статуса подписки

Adapty генерирует событие каждый раз, когда подписка пользователя изменяется.

Чтобы получать сообщения от Adapty, необходимо выполнить дополнительную настройку:

Adapty.delegate = self

// To receive subscription updates, extend `AdaptyDelegate` with this method:
nonisolated func didLoadLatestProfile(_ profile: AdaptyProfile) {
    // handle any changes to subscription state
}

Adapty также генерирует событие при запуске приложения. В этом случае передаётся кэшированный статус подписки.

Кэш статуса подписки

Кэш, реализованный в Adapty SDK, хранит статус подписки профиля. Это означает, что даже при недоступности сервера можно обратиться к кэшированным данным для получения информации о статусе подписки профиля.

При этом важно учитывать, что напрямую запрашивать данные из кэша невозможно. SDK периодически обращается к серверу каждую минуту, чтобы проверить наличие обновлений, связанных с профилем. При наличии изменений — например, новых транзакций или других обновлений — они передаются в кэш, чтобы синхронизировать его с сервером.