iOS Enterprise: TestFlight vs. Web
TestFlight supports distribution of Enterprise apps using it’s standard invitation / team management process. This post compares the process of using TestFlight, with the process of using a web server for distribution.
TestFlight Distribution of an Enterprise iOS Application
Here we document the steps needed for a user to successfully install your Enterprise app using TestFlight, which are unfortunately similar to the tedious multi-step process required for a typical iOS app via TestFlight (provisioned with UDIDs and destined for the App Store).
- The developer produces an archived build via Xcode and uploads it to TestFlight.
- The developer invites the user to the TestFlight team.
- The user receives an email from TestFlight with a link to accept the invitation from the TestFlight team.
- After the user clicks on the link, she is directed to a log in/sign up screen on TestFlight’s website:
- After the user logs in (or creates an account) and accepts the invitation, she is directed to a list of apps she is able to download and install.
- The user must then register her device with TestFlight to be able to install apps via TestFlight
- The developer must go into the team’s TestFlight app and manually add the user to the build (by going to permissions and selecting the checkbox next to the user’s name — the same steps as with normally provisioned iOS apps).
- After the user has registered her device on TestFlight, she will see the app listed in her TestFlight app for available builds to download.
- After installing the app, on first launch, she will be prompted with the following dialog before the app opens:
- The user is able to use the app!
Custom Web Distribution of an Enterprise iOS App
This process seems to involve less back-and-forth between developer and user. Here are the steps (after the initial web server is set up):
- The developer produces an archived build via Xcode.
- In the archive organizer, the developer selects the correct archive and selects “Distribute…”
- In the dialog, the developer selects “Save for Enterprise or Ad-Hoc Deployment”.
- The developer selects the correct code signing identity (with an Enterprise provisioning profile).
- The developer chooses a filename and location, selects “Save for Enterprise Distribution” and clicks “Save”.
- The developer must fill out the “Application URL” and the “Title” of the application in the text fields.
- Application URL - the web address where the file will be located on the server.
- Title - of the app
- The developer must fill out the “Application URL” and the “Title” of the application in the text fields.
- The developer uploads/saves the .ipa at the specified “Application URL” and saves the manifest (.plist) file on the server and provides a link to the manifest file on a web page.
- example html:
1<a href="itms-services://?action=download-manifest&url=http://webserver.com/manifestFileName.plis”>Install App</a>
- example html:
- The developer can then ping the user to install the app via the web page.
- The user goes to the web page, clicks on the link to install the app and is shown the following dialog:
- After the user has successfully downloaded and installed the app, the user selects the app and is prompted with the following dialog:
- The user is able to use the app!
Ideal Solution
Using a custom web server is the best user experience for distributing an Enterprise app, but we miss a lot of valuable data that TestFlight provides us. So, the ideal solution is to use the custom web server for distribution and upload the same .ipa to TestFlight. Once users have downloaded the app, you can watch the events roll in on TestFlight!