Distributing an app is arguably the Achilles’s heel of the iOS app development process – and Apple makes us feel dumb at times. Provisioning profiles, certificates, device registrations, app ids, oh my! Apple enforces certain requirements to make sure they know who created which apps and control which devices they run on (the app store is a significant chunk of revenue to protect!).
What follows is a cheat sheet to use when trying to figure out how to easily get your iOS app to your users (whether they be testers or end users).
For all intents and purposes, you need to have a valid Apple Developer account to distribute an iOS app – regardless of whether you are deploying an app to a few testers or the entire world via the app store. You have two options here:
The main difference is that the Apple Developer Program limits the number devices you may register per year (more on this later). On the other hand, the Enterprise Program allows for unlimited distribution within your organization. Don’t think that you can use an Enterprise account to circumvent the public app stores, it’s not a risk that you want to take!
Every iOS app you create has to be signed with a certificate (regardless of your Apple Developer Program membership). Luckily there are only two types of certificates you probably need to worry about (which you access in the Apple Developer Member Center):
If you are setting up push notifications, you’ll have to set up an APN (Apple Push Notification) cert as well. That is best explained in this tutorial.
An “app id” is a unique identifier for your app. You’ll be prompted to enter a description (this can be anything you want) and then enter either an explicit or a wildcard app id. Let’s quickly go over these options:
Regardless of which type of app id you create, your Bundle ID field MUST match the bundle id/application identifier in your project! If you are using the Telerik Platform for this, we expose it in a property pane:
If you are deploying your app to the public app store or to a private, in-house, app store, you can safely skip this step. Everyone else who is using this for development/testing, read on:
Since development and ad hoc provisioning profiles (see the next step) are limited to 100 device deployments per year per device type, you have to actually register those devices in the Apple Developer Member Center. And yes, I said “per device type”, so you can actually register 500 devices per year, if you had 100 each of the following:
Each device you register gets a name (whatever you want) and a UDID. What’s a UDID, you ask? It’s a unique id for every Apple device out there. The easiest way to get someone’s UDID is to have them go to whatsmyudid.com. You can thank me later.
Ok, this is where it gets slightly more tricky, so pay close attention.
I know I just said that every iOS app is signed with a certificate. The reality is that they are signed with a combination of a certificate and a provisioning profile. A provisioning profile effectively creates an association between a set of devices and your app.
You are offered four different provisioning profiles to choose from (and yes, you will end up creating more than one profile for each app, depending on the life stage of the app):
However, maybe a better way of looking at this choice is to look at your exact use case. Are you…
Trying to debug an app on your own physical device?
Use an iOS App Development Provisioning Profile.
Trying to distribute an app to your co-workers? Or do you want to deploy your app to a group of beta testers?
Use an Ad Hoc Provisioning Profile.
Trying to deploy your app to the public app store?
Use an App Store Provisioning Profile.
Use an In House Provisioning Profile (again, requires an Apple Developer Enterprise Program membership).
To create a build (IPA) of your app, you’ll have to use Xcode or – a better option – is to use the Telerik Platform. The Telerik Platform handles all of the iOS (and Android and Windows Phone) SDK management for you, so you simply push your code to the cloud and we create a build for you. To do so, you simply upload the certificate and provisioning profile you just created:
Telerik Platform can also handle app store distribution for you by automatically uploading your app to the iOS app store:
If you are looking to distribute your app in-house for beta testing or end user distribution, you can utilize Telerik AppManager, which is a key part of the Telerik Platform! In addition, you can leverage AppManager LiveSync for a far easier way of updating your app once it is installed on your users’ devices.
Hopefully this short guide has provided a little more clarity for iOS app store distribution. There are some murky waters to wade through, but it’s worth it to see your shiny new app running on your device or even deployed to the app store for millions of people to use. Good luck!
Header image courtesy of Kārlis Dambrāns