The Applivery SDK is a lightweight library for iOS and Android that adds over-the-air update management, forced update enforcement, feedback reporting, and user binding directly into your App. It is designed for internal and beta distribution Builds — not for App Store or Google Play production releases.
The SDK integrates with just a few lines of code and requires no Applivery account registration from your end users.
The SDK always updates to the most recent build available for the App, matching only the bundle ID or package name. It does not respect Publication filters, groups, or audiences — since the Publication from which a Build was originally downloaded cannot be identified at update time. If you need per-flavor or per-feature update isolation, create a separate Applivery app for each variant with a single Publication each.
Features
Current version: 4.5.0
Minimum iOS version: 15.0
Language: Swift
Distribution: Swift Package Manager (recommended), CocoaPods (deprecated)
Installation
Swift Package Manager (recommended)
In Xcode, go to File → Add Package Dependencies and enter:
https://github.com/applivery/applivery-ios-sdk.git
Set the dependency rule to Up to next major version (4.0.0 < 5.0.0).
You will be prompted to choose between two targets:
Target | When to use |
|---|---|
| Use when the App is strictly internal and will never be submitted to the App Store. Static framework. |
| Use when you distribute internally via Applivery but also submit to the App Store. The framework can be excluded at build time for App Store schemes. |
App Store submissions: Including the Applivery SDK in an App Store build is not permitted and your submission may be rejected. Use AppliveryDynamic and exclude it from your App Store build configuration — see Conditionally excluding the Applivery iOS SDK for step-by-step instructions.
CocoaPods (deprecated)
pod 'Applivery', '~> 4.5'
Setup
Initialize the SDK early in your App's lifecycle, typically in AppDelegate or SceneDelegate:
Swift
import Applivery
let applivery = AppliverySDK.shared
applivery.start(token: "YOUR_APP_TOKEN", tenant: "YOUR_TENANT")
Objective-C
@import Applivery;
AppliverySDK *applivery = [AppliverySDK shared];
[applivery startWithToken:@"YOUR_APP_TOKEN" tenant:@"YOUR_TENANT"];
The tenant parameter is optional. If omitted, the SDK uses the default Applivery host. Your App Token is available in App Settings → API Tokens in the Applivery dashboard.
Configuration
Pass an AppliveryConfiguration object to start() to customize SDK behavior:
Swift
import Applivery
let config = AppliveryConfiguration(
postponedTimeFrames: [3600, 86400], // Delay options in seconds shown to users when an update is available
enforceAuthentication: true // Require user login before SDK usage
)
AppliverySDK.shared.start(
token: "YOUR_APP_TOKEN",
tenant: "YOUR_TENANT",
configuration: config,
skipUpdateCheck: false
)
Objective-C
NSArray<NSNumber *> *timeFrames = @[@3600, @86400];
AppliveryConfiguration *config = [[AppliveryConfiguration alloc]
initWithPostponedTimeFramesNSNumber:timeFrames
enforceAuthentication:YES];
Property | Type | Description |
|---|---|---|
|
| Time intervals in seconds shown as "remind me later" options in the update dialog. Maximum 3 options. |
|
| If |
Key API Methods
Method | Description |
|---|---|
| Initializes the SDK. Call once at app launch. |
| Checks for a newer build and prompts the user to update. Pass |
| Returns |
| Downloads and installs the latest Build immediately. |
| Automatically checks for updates when the App returns from background. |
| Presents the feedback UI programmatically (e.g., on shake gesture). |
| Enables or disables screenshot detection to trigger feedback. |
| Associates a user identity with the current session for analytics and feedback tracking. |
| Removes the currently bound user. |
| Returns the currently bound user's profile as a dictionary. |
| Handles SAML authentication redirect URLs. Call from |
Customization
UI Colors
AppliverySDK.shared.palette = Palette(
primaryColor: .orange,
secondaryColor: .white,
primaryFontColor: .white,
secondaryFontColor: .black,
screenshotBrushColor: .green
)
String Literals — localize or rebrand SDK messages:
AppliverySDK.shared.textLiterals = TextLiterals(
appName: "MyApp",
otaUpdateMessage: "A new version is available. Update now?",
forceUpdateMessage: "This version is no longer supported. Please update to continue."
)
Logging
applivery.logLevel = .info // .none | .error | .info | .debug
Level | Recommended for |
|---|---|
| Production (default) |
| Development |
| Testing the SDK integration |
| Debugging SDK requests and responses |
Swift / Xcode Compatibility
SDK Version | Xcode | Swift |
|---|---|---|
v4.0+ | 13.x+ | 5.x |
v3.4 | 13.x | 5.x |
v3.2 | 12.x | 5.x |
v2.7.x | 9.x – 10.x | 4.0, 4.2 |
Current version: 4.8.0
Minimum Android version: Android 7.0 (API level 24)
Language: Kotlin
Distribution: Maven Central
Installation
Add the dependency to your App's build.gradle. The SDK is designed for non-production Builds:
// Use debugImplementation so Applivery only runs in debug/testing builds
debugImplementation("com.applivery:applivery-sdk:${latestVersion}")
No-op artifact for release Builds
To avoid a complex source set configuration for excluding the SDK from release Builds, use the no-op artifact. It exposes the same public API as the full SDK but does nothing at runtime:
releaseImplementation("com.applivery:applivery-sdk-no-op:${latestVersion}")
This lets you call Applivery SDK methods throughout your codebase without affecting release Builds.
Setup
Initialize the SDK in your Application.onCreate() method:
import com.applivery.android.sdk.Applivery
import com.applivery.android.sdk.start
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
Applivery.start(APPLIVERY_TOKEN)
// For private Applivery instances, also pass the tenant:
// Applivery.start(APPLIVERY_TOKEN, TENANT)
}
}
For Java projects (version 4.0.0+), use the AppliveryInterop class to access SDK functionality.
Your App Token is available in App Settings → API Tokens in the Applivery dashboard.
Configuration
Pass a Configuration object to Applivery.start() to customize behavior:
val configuration = Configuration(
postponeDurations = listOf(2.hours, 30.minutes, 5.minutes),
enforceAuthentication = false,
downloadAction = BuildDownloadAction.IMMEDIATE
)
Applivery.start(APPLIVERY_TOKEN, configuration = configuration)
Property | Type | Description |
|---|---|---|
|
| Options shown to users to postpone an available update. Maximum 3 options. |
|
| If |
|
|
|
Update Management
// Check for updates manually
Applivery.getInstance().checkForUpdates()
// Automatically check when app returns from background
Applivery.getInstance().setCheckForUpdatesBackground(true)
// Download the latest update without installing immediately
val callback = object : DownloadLastUpdateCallback {
override fun onSuccess(update: CachedAppUpdate) {
update.install() // install when ready
}
override fun onError(error: Throwable) { /* handle error */ }
}
Applivery.getInstance().downloadLastUpdate(callback)
// Enable background auto-download
Applivery.getInstance().enableDownloadLastUpdateBackground(callback)
// Trigger immediate download + install (follows configured downloadAction)
Applivery.getInstance().update()
enableDownloadLastUpdateBackground and setCheckForUpdatesBackground are mutually exclusive. Enabling one disables the other.
Feedback
// Enable/disable screenshot-triggered feedback
Applivery.getInstance().enableScreenshotFeedback()
Applivery.getInstance().disableScreenshotFeedback()
// Show feedback UI programmatically
Applivery.getInstance().feedbackEvent()
User Management
// Bind a user for analytics and feedback tracking
Applivery.getInstance().bindUser(email, firstName, lastName, tags)
// Remove the bound user
Applivery.getInstance().unbindUser()
// Get current user
Applivery.getInstance().getUser(getUserCallback)
Required Permissions
The SDK requires the following runtime permissions. Request them in your App before the features that need them are used:
Permission | Used for |
|---|---|
| Showing notifications during update downloads and screen recording |
| Screenshot detection for feedback (full access required on Android 14+) |
| Screen recording for feedback |
UI Customization
Create a res/values/applivery.xml file to override default colors and strings:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="applivery_primary_color">#FF0241E3</color>
<color name="applivery_accent_color">#FF0241E3</color>
<color name="applivery_foreground_color">#FF010258</color>
<string name="appliveryUpdateMsg">A new version is available. Update now?</string>
<string name="appliveryMustUpdateAppLocked">This version is outdated. Please update to continue.</string>
</resources>
No articles match your current filters.