Skip to main content
Version: 2.0

Check subscription status

Adapty makes it easy to track subscription status without needing to manually input product IDs into your code. Instead, you can simply check for an active access level to confirm a user's subscription status.

You can create multiple access levels for a single app. For example, in a newspaper app, you might sell subscriptions to different topics like "sports" and "science." However, most apps only require one access level. If that’s the case for your app, you can use the default "premium" access level.

Once you determine the user's subscription status (access level), you can grant access to the appropriate features in your app.

Before you start checking subscription status (Click to Expand)

Access level and the AdaptyProfile object

Access levels are properties of the AdaptyProfile object. We recommend retrieving the profile when your app starts, such as when you identify a user , and then updating it whenever changes occur. This way, you can use the profile object without repeatedly requesting it.

To be notified of profile updates, listen for profile changes as described in the Listening for profile updates, including access levels section below.

Retrieving the access level from the server

To get the access level from the server, use the .getProfile() method:

Adapty.getProfile { result in
if let profile = try? result.get() {
// check the access
profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false {
// grant access to premium features
}
}
}

Response parameters:

Parameter
ProfileAn AdaptyProfile object. You generally need to check only the access level status of the profile to determine if the user has premium access to the app. The .getProfile method provides the most up-to-date result by querying the API. If the Adapty SDK fails to retrieve information due to reasons like no internet connection, cached data will be returned. The Adapty SDK regularly updates the AdaptyProfile cache to keep the information as current as possible.

Example: Checking the default "premium" access level

Adapty.getProfile { result in
if let profile = try? result.get(),
profile.accessLevels["premium"]?.isActive ?? false {
// grant access to premium features
}
}

Listening for profile updates, including access levels

Adapty fires an event whenever the user’s profile is updated.

To receive profile updates, including changes to subscription status (access levels), follow these steps:

Adapty.delegate = self

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

Adapty also triggers an event when the application starts. In this case, the cached profile will be returned.

Caching profile including access level

The Adapty SDK includes a cache that stores the user profile and access level as a part of it. This ensures that even if the server is unavailable, you can still access the profile’s subscription status. However, note that you cannot directly request data from the cache. The SDK regularly queries the server every minute to check for updates or changes related to the profile. Any modifications, such as new transactions, will be synced with the cached data to keep it aligned with the server