Table of Contents
- Getting Started
- SDK Installation
- SDK Setup
- Swift & Xcode versions support
- Advanced concepts
Applivery iOS SDK is a Framework to support Applivery.com Mobile App distribution for iOS Apps.
With Applivery you can massively distribute your iOS Apps (both Ad-hoc or In-House/Enterprise) through a customizable distribution site with no need of your users have to be registered in the platform. Combined with Apple Developer Enterprise Program and Enterprise certificates, Applivery is perfect not only for beta testing distribute to your QA team, but also for In-House Enterprise distribution for beta testing users, prior to a release, or even for corporative Apps to the employees of a company.
- Automatic OTA Updates when uploading new versions to Applivery.
- Force update if App version is lower than the minimum version configured in Applivery.
- Send feedback. Your test users can report a bug or send improvements feedback by simply taking a screenshot.
First of all, you should create an account on Applivery.io and then add a new Application.
Get your credentials
API TOKEN: that identifies and grants access to your account in order to use the SDK.
You can get your API TOKEN in your
App -> Settings -> Integrations section.
Install carthage with using brew
$ brew update && brew install carthage
Add the following line to your's Cartfile
github "applivery/applivery-ios-sdk" ~> 3.0
carthage update and then drag the built framework into your project.
More info about Carthage here.
Install the ruby gem
$ gem install cocoapods
Add the following line to your's Podfile
project '<Your Project Name>.xcodeproj' # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' use_frameworks! target '<Your Target Name>' do pod 'Applivery', '~> 3.0' end
and then run
pod install. More info about CocoaPods here
- Download the Applivery.framework here
- Drag it to your frameworks folder
- Add it to the embedded binaries
If your project is written in Objective-C, you should also enable the "Always Embed Swift Standard Libraries" option. You'll find it in the Build Settings section:
At your application start up (for example in the AppDelegate) add the following code:
First import the module:
and then the magic:
let applivery = Applivery.shared applivery.start(token: "YOUR_TOKEN", appStoreRelease: false)
Applivery *applivery = [Applivery shared]; [applivery startWithToken:@"YOUR_TOKEN" appStoreRelease:NO];
IMPORTANT I: As you can suspect, you should replace the string
YOUR_TOKEN with your token. Easy! Don't you think so?
IMPORTANT II: If you are experimenting problems submitting your app to the AppStore, please check this known issue about Embedded Frameworks and AppStore submissions
- token: Your app token
- appStoreRelease: Flag to mark that the build will be submitted to the AppStore. This is needed to prevent unwanted behavior like prompt to a final user that a new version is available on Applivery.com.
- True: Applivery SDK will not trigger automatic updates anymore. Use this for AppStore
- False: Applivery SDK will normally. Use this with builds distributed through Applivery.
Swift & Xcode version support
The compatibility version is as follow:
|Applivery Version||Xcode Version||Swift Version|
|v1.2.x||7.x||2.0, 2.1, 2.2|
|v2.x||8.x, 9.x||3.0, 3.1, 4.0|
|v2.7.x||9.x, 10.x||4.0, 4.2|
|v3.x||10.x||4.0, 4.2, 5.0|
Logs and debugging
In some cases you'll find usefull to see what is happening inside Applivery SDK. If so, you can enable logs for debugging purposes.
applivery.logLevel = .info
applivery.logLevel = LogLevelInfo;
Possible values are:
- None: Default value. No logs will be shown. Recommended for production environments.
- Error: Only warnings and errors. Recommended for develop environments.
- Info: Errors and relevant information. Recommended for test integrating Applivery.
- Debug: Request and Responses to Applivery's server will be displayed. Not recommended to use, only for debugging Applivery.
By default, Applivery will show a feedback formulary to your users when a screenshot is detected. If you want to avoid this, you can disable it calling the following method:
Programatically login a user in Applivery. If your app has a custom login and you need to track the user in the platform. Used for know who has downloaded a build or who sent a feedback report.
applivery.bindUser( email: "firstname.lastname@example.org", // Required firstName: "John", // Optional lastName: "Dow", // Optional tags: [ios, testers] // Optional )
Logout a previously binded user
Customize SDK's colors
You can create a new instance of
Palette class and assign it to
Applivery.shared.palette = Palette( primaryColor: .orange, secondaryColor: .white, primaryFontColor: .white, secondaryFontColor: .black, screenshotBrushColor: .green )
The SDK has Applivery's colors by default so, if you only need to change the primary color, yo can do this:
Applivery.shared.palette = Palette( primaryColor: .orange, )
Or even directly change the property
Applivery.shared.palette.primaryColor = .orange
Colors you can change
primaryColor: Main color of your brand
secondaryColor: Background color
primaryFontColor: Primary font color. It should be in contrast with the primary color
secondaryFontColor: Secondary font color. It should be in contrast with the secondary color
screenshotBrushColor: In the feedback's view, users can edit the screenshot to draw lines on top of it. By default, these lines are red, but you are allowed to change the color to fit better with your application's color palette.
Customize string literals
You can customize the SDK string literals to fit your app.
Applivery.shared.textLiterals = TextLiterals( appName: "Applivery", alertButtonCancel: "Cancel", alertButtonRetry: "Retry", alertButtonOK: "OK", errorUnexpected: "Unexpected error", errorInvalidCredentials: "Invalid credentials", errorDownloadURL: "Couldn't start download. Invalid url", otaUpdateMessage: "There is a new version available for download. Do you want to update to the latest version?", alertButtonLater: "Later", alertButtonUpdate: "Update", forceUpdateMessage: "Sorry this App is outdated. Please, update the App to continue using it", buttonForceUpdate: "Update now", feedbackButtonClose: "Close", feedbackButtonAdd: "Add Feedback", feedbackButtonSend: "Send Feedback", feedbackSelectType: "Select type", feedbackTypeBug: "Bug", feedbackTypeFeedback: "Feedback", feedbackMessagePlaceholder: "Add a message", feedbackAttach: "Attach Screenshot", loginInputUser: "user", loginInputPassword: "password", loginButton: "Login", loginMessage: "Login is required!", loginInvalidCredentials: "Wrong username or password, please, try again", loginSessionExpired: "Your session has expired. Please, log in again" )
The SDK has literals by default so, if you only need to change the update messages, yo can do this:
Applivery.shared.textLiterals = Palette( appName: "MyApp", otaUpdateMessage: "There is a new version available for download. Do you want to update to the latest version?", forceUpdateMessage: "Sorry this App is outdated. Please, update the App to continue using it" )
Or even directly change the property
Applivery.shared.textLiterals.appName: "MyApp" Applivery.shared.textLiterals.otaUpdateMessage: "There is a new version available for download. Do you want to update to the latest version?" Applivery.shared.textLiterals.forceUpdateMessage: "Sorry this App is outdated. Please, update the App to continue using it"
Important: The default literals are only in english. Consider to set localized strings to fully support all languages your app does.
Embedded frameworks and AppStore submissions
Applivery.framework is built with a fat universal library, this means that you can compile for devices or simulator without any problem, but due to a possible (and strange) Apple's bug, you can not submit an App to the AppStore if it has inside an embedded framework with simulator slices.
Depends of your integration method, the solution is: