The Applivery SDK creates and tracks user records automatically for every device that runs an app with the SDK integrated. These records appear in the Applivery Dashboard and allow you to get insights into who installs your apps, who reports feedback, and how builds are adopted across your user base.
SDK users come in two types depending on how they originate: SDK users (bound, named identities) and Temporal SDK users (anonymous, device-based). Both count as employees against your workspace's employee limit.
Both SDK users and Temporal SDK users count toward your workspace's Store Employees quota.
Types of SDK Users
| SDK User | Temporal SDK User | |
|---|---|---|
| Origin | Created programmatically via bindUser() |
Created automatically by the SDK on first device launch |
| Duration | Permanent | Expires after 30 days of inactivity across all apps in your organization |
| Identifier | Email address you provide. E.g. [email protected] |
Device ID. E.g. 6effd10a-5b00-45ec-b02d-580b53a5775c |
| Description | Named employees with a known identity, linked to the session via bindUser() |
Unknown users automatically created to track unique devices. Unique across your workspace based on device ID. |
Inactivity is defined as the last time a user opened any app from your organization with the SDK integrated. The 30-day timer resets on each open.
SDK Users (Bound)
When you call bindUser() with an email address, Applivery links the current device session to a named identity. This allows you to:
- See who downloaded or installed each build.
- Attribute feedback reports and bug submissions to a specific person.
- Track update adoption per named user.
- Control app access by user identity when authentication enforcement is enabled.
Bound users appear with their email address in the Applivery Dashboard, making it easy to correlate SDK activity with your own user base.
Temporal SDK Users (Anonymous)
When a device runs the SDK for the first time without a bindUser() call, Applivery automatically creates a Temporal SDK User record identified by the device's unique ID. These records allow basic device-level analytics (installations, update adoption) even when no named identity is available.
Temporal SDK users expire after 30 days of inactivity. If the same device opens the app again after expiry, a new Temporal SDK User record is created.
Binding a User
Call bindUser after your app's own authentication flow completes, so the identity is known before any Applivery interactions occur.
AppliverySDK.shared.bindUser(
email: "[email protected]", // Required
firstName: "Jane", // Optional
lastName: "Doe", // Optional
tags: ["beta", "ios-team"] // Optional — used for filtering in the Dashboard
) {
// onComplete callback — called when binding is confirmed
}
[[AppliverySDK shared] bindUserWithEmail:@"[email protected]"
firstName:@"Jane"
lastName:@"Doe"
tags:@[@"beta", @"ios-team"]
onComplete:nil];
Applivery.getInstance().bindUser(
email = "[email protected]",
firstName = "Jane",
lastName = "Doe",
tags = listOf("beta", "android-team")
)
bindUser parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
email |
String | Yes | The user's email address. Used as the primary identifier in the Applivery Dashboard. |
firstName |
String | No | The user's first name. Displayed alongside the email in reports and feedback. |
lastName |
String | No | The user's last name. |
tags |
Array of Strings | No | Custom labels for grouping or filtering users in the Dashboard. E.g. ["qa", "ios"]. |
Unbinding a user
Call unbindUser when your app's user logs out, so subsequent SDK interactions are no longer attributed to that identity.
AppliverySDK.shared.unbindUser {
// onComplete callback
}
[[AppliverySDK shared] unbindUserWithOnComplete:nil];
Applivery.getInstance().unbindUser()
After unbinding, the SDK session returns to anonymous mode until bindUser is called again.
Retrieving the current user
You can read back the currently bound user's profile at any point:
AppliverySDK.shared.getUser { userInfo in
// userInfo is an NSDictionary, or nil if no user is bound
print(userInfo ?? "No user bound")
}
Applivery.getInstance().getUser(object : GetUserCallback {
override fun onSuccess(user: AppliveryUser?) {
// user is null if no user is bound
}
override fun onError(error: Throwable) { /* handle */ }
})
Authentication enforcement
If your publication requires users to log in before accessing the app, you can enforce this at the SDK level. When enforceAuthentication is set to true in the SDK configuration, users must authenticate via Applivery (or your workspace's SSO) before the app becomes usable.
let config = AppliveryConfiguration(
enforceAuthentication: true
)
AppliverySDK.shared.start(token: "YOUR_TOKEN", configuration: config)
val config = Configuration(
enforceAuthentication = true
)
Applivery.start(APPLIVERY_TOKEN, configuration = config)
When enforcement is enabled, and the user has not authenticated, Applivery will present a login prompt. If enforceAuthentication is false (the default), users can dismiss the login prompt and continue using the app anonymously.
User visibility in the Dashboard
SDK users are visible per app in the Applivery Dashboard or in the Directory section under the Settings menu. For each user, you can see:
- Email address and display name (for bound users).
- Tags assigned via
bindUser. - Devices associated with the user.
- Download history — which builds were installed.
- Feedback submissions attributed to the user.
Anonymous users appear with a device identifier rather than an email address.
SDK users vs. other user types
Applivery has several distinct user types. Understanding the differences helps avoid confusion:
| User Type | Who they are | How they authenticate | Where they appear |
|---|---|---|---|
| Collaborators | Team members managing the app (developers, QA leads) | Applivery account or SSO | Dashboard → Team |
| Store Employees | End users with access to App Store publications | Applivery account, SSO, password, or OTP | App → Users (Store) |
| SDK Users | Users of an app with the SDK integrated | Via bindUser in the app code |
App → Users (SDK) |
| OTP Users | External users with time-limited publication access | One-time password sent by email | App → Publication → OTP Allowlist |
SDK users are the only type created programmatically from within the app itself. All other types are managed through the Applivery Dashboard or API.