Dispelling confusion about iOS provisioning profiles

Understanding the nuances between the different types of iOS provisioning profiles (and how they relate to the different types of iOS Developer programs) can be a real pain. I never found a nice visual aid in Apple's documentation, so I decided to make my own:

iOS provisioning profile diagram

The important distinctions to notice are:

  1. The fact that the Enterprise Developer Program does not support App Store provisioning profiles. This means that if you're using an Enterprise Developer Program, you cannot deploy to the iOS App Store.
  2. The fact that the regular Developer Program does not support In House provisioning profiles. This means that you can only deploy to the App Store; no deploying your app without using the App Store. This is typically something only needed for enterprises deploying internal apps, but it's worth noting.
  3. The overlap in the diagram denotes provisioning profile types that require you gather and bind to the UDIDs (unique device identifiers) of the devices you intend to deploy to.
  4. The exclusive portions of the diagram denote profile types that do not require UDIDs for deployment. This is obvious in the case of the App Store. This characteristic is particularly useful in the Enterprise Program, especially when it comes to testing: no UDID gathering required in order to deploy to test users.

I hope this helps those that are confused about iOS provisioning profiles!