Development profiles and ad hoc profiles
New iOS developers often find it confusing to navigate the iOS provisioning portal. Every iOS app needs to be built with a provisioning profile, which contains rules about which devices are allowed to run the app. We often see new developers confused about the difference between a development profile and an ad hoc profile.
If you need to have your app tested by people, you normally use an ad hoc profile. This has specific UDIDs (Apple device IDs) in it, and your app will only run on those devices. Apple allows this so that you can test your app before you submit it to the App Store. In the iOS provisioning portal, when you select provisioning there are two tabs, development and distribution. It is natural to think that since the app is in development mode, you would need a development profile, but this is not the case. Development profiles are for debugging. Apple considers ad hoc to be a form of distribution, so it is found under the distribution tab.
Xcode will let you build your app with a development profile, but if you send it to someone it is likely to fail to install on their device, which can be hard to debug. If you have an app that fails to install and you're not sure why, make sure that you built it with a distribution profile.