Last updated April 10, 2019
Update 2/7/2017: Provided additional information on distributing ad-hoc binaries via MDM.
Consider the diversity of scenarios that apps are built in: free apps, buy-once apps, apps that allow in-app purchases, apps created by businesses for internal use, apps developed by contractors for their clients, and still others. It’s both understandable and fortunate that Apple has created an extensive number of programs to aid in iOS distribution of apps.
This article discusses all methods of currently distributing apps to iOS, whether distributing custom apps within the enterprise or apps for the public app store. Worth noting is that the different methods can be generally characterized by two qualities: how the app binary is delivered to a device and how the licensing is handled.
Below is an at-a-glance diagram of the different programs. Generally, one program (and one program only) will lend itself as the appropriate choice for your distribution needs.
|Ad Hoc||manual, TestFlight, or MDM||Developer must register the UDID of each device before it will install.|
|Enterprise||manual or MDM||Works on all devices within an organization without registration. Not permitted for use outside of an organization.|
|App Store||Public App Store||Works on all devices that have an Apple ID.|
|B2B VPP||MDM||Managed within VPP program.|
For details on each program, including the pros and cons, read on!
The most common way of distributing an app is by using the public app store. This method has a lot going for it. For one, your app becomes available to anyone with an iOS device and an Apple ID. Additionally, it’s easy to monetize your app by setting a price for purchase, utilizing in-app purchasing, or taking advantage of the iAd network.
While it helps ensure a good experience for customers of the app store, Apple’s app approval process is notoriously painful for app developers. The delay between when an app is submitted for initial review and when feedback is available can be long. We’ve seen up to a month delay before receiving feedback for particularly involved apps. Subsequent responses, while faster, can be additional days or weeks even. This website provides an estimate on the current wait time.
The app approval process makes sure that apps follow proper guidelines for the app store. There may be issues with an app, such as a bug or a security vulnerability that Apple will require you to patch. Your app may also have a behavior that, while not unsafe, Apple doesn’t like for one reason or another. You may have to change your app in ways you would prefer not to in order to get Apple’s blessing.
Distributing through the app store is a great choice if you need the visibility and availability that it provides. If this isn’t important to you, one of the other distribution options will be much less troublesome by avoiding the Apple app review process.
Apple provides the ad-hoc distribution method for developers that wish to share an app for a private beta or small temporary distribution. With ad-hoc deployment, the developer is responsible for delivering the app binary to each device, such as using email or a URL download. The binary will not work on just any device. A developer will need to add the UDID of each device and register the device in the Apple Member Center before iOS allows the binary to install to the device.
This is a good mechanism to use for intermediate stages of your app, such as a private beta or a temporary deployment situation. To use it, simply export your app from Xcode with the Ad Hoc Deployment option.
Once an ad-hoc binary has been exported, it can also be distributed through MDM as an enterprise binary can be. The difference is that you will still have to manage UDIDs for the binary. Distributing an ad-hoc binary via MDM does not magically make the licensing in the binary more permissive.
Enterprise distribution is an option that hasn’t always existed. It came out of the need for enterprises to build an app and internally distribute it to staff without dealing with the headache of registering all device UDIDs as you would need to with ad hoc deployment.
Enterprise deployment is when an app is signed and exported from Xcode in such a way that it can be installed on any device without registering the device or publishing the app to the app store. The company is responsible for the distribution of the app within their organization. As with Ad-Hoc distribution, this can be performed via email, a URL, or by using a Mobile Device Management (MDM) service, which allows a company to upload the binary and then send installation requests to MDM-enrolled devices remotely from a web administration console. SimpleMDM is a cloud MDM service that supports this.
Worth noting is that enterprise deployment is strictly for use by organizations creating their own apps for their own consumption. It is a violation of the Apple program to use enterprise-signed IPAs for app distribution to any devices outside of the organization.
That’s a mouthful! If you aren’t familiar with Apple’s Volume Purchase Program (VPP), this resource will help you understand it.
Enrolling in Apple VPP allows your business to essentially have its own private app store. From within the program, you can make internal app binaries available to any device that has joined the program. You can also share your apps with other businesses using VPP, and vice versa. There is an app approval process before an app can be made available in the VPP program, but it is much more flexible in what it will allow, since the apps won’t be available for general consumption.
Since Apple VPP is essentially a private store, app distribution is handled by the program itself. VPP is almost always used in conjunction with an MDM service, allowing a company to push VPP invitations and apps to devices from an administration console. SimpleMDM supports extensive app distribution and VPP functionality.
Once you’ve chosen a program to use, equally important is how the actual app deployment is planned. We highly recommend reading the article Install Apps Remotely to iPads and iPhones before deciding on a deployment methodology. There are seemingly small details that, when navigated appropriately, will make an otherwise painful experience quite painless and automated.