67

What is the difference between a development provisioning profile and an ad hoc provisioning profile?

Couldn't we always use the ad hoc profile for everything but the store?

AsimRazaKhan
  • 2,154
  • 3
  • 22
  • 36
Bobby Bruckovnic
  • 999
  • 3
  • 9
  • 16

2 Answers2

49

An ad-hoc provisioning profile is used later in the development process, particularly when you want to distribute your app to a small or medium size group of testers that are not included in the iOS developer program for your organization. An app deployed with an ad-hoc provisioning profile will be almost identical to the version you submit to the App Store (ie. it will need a distribution certificate for push notifications to work, etc.)

Of course you could add your QA team and betatesters to the organization and use a development provisioning profile, but this approach has many disadvantages:

  • You may end up with many development certificates, making it difficult to manage them.
  • You are giving your betatesters the right to compile and run the app on a device. (This is a extremely bad policy.)
  • You want to test your app in the closest possible environment to the App Store environment. Development environments, like running the app from Xcode, can masquerade some bugs that will show up when you publish your app.
Daniel Martín
  • 7,815
  • 1
  • 29
  • 34
  • 2
    Daniel, could you expand more the second bullet point? Am I not giving the same rights to betatesters with an ad hoc profile? – Bobby Bruckovnic May 12 '13 at 12:11
  • Also you don't need to add the QA team and betatesters to the organization. Just like for ad hoc you can add the UUIDs. – Bobby Bruckovnic May 12 '13 at 12:46
  • 1
    @BobbyBruckovnic With a development profile they can debug the application. – Daniel Martín May 12 '13 at 13:07
  • And you need to add them to the iOS developer portal (and the certificates installed on their keychain), or they won't be able to run the app on a device. UUIDs are enough for ad-hoc because you are signing the app on behalf of your organization, not an individual. – Daniel Martín May 12 '13 at 13:09
  • 16
    Ok, there is something that I'm not getting. For instance if I would like to let you test an Iphone app I wrote. I would need to add your UUID to my devices list. Then I would be able to send you the .ipa signed with my development certificate and it would work on your device. Why would this be a bad policy? Can you extract the provisioning profile and do any damage? Other potential problems. Also how can anyone debug an app without the development certificate, only using the development provisioning profile? – Bobby Bruckovnic May 12 '13 at 13:46
  • I completely agree with Bobby's point. Could anyone add on top of that? – Rashmi Ranjan mallick Sep 22 '14 at 13:30
  • 3
    - ipa built with Individual ad hoc provisioning profile can be installed on only registered devices - ipa that is built with ENTERPRISE ad hoc provisioning profile can be installed on any device – Amarnath Rayudu Feb 13 '19 at 09:38
34

All Types of Provisioning Profiles explained in summary

Provisioning Profile simple definition

Provisioning profiles are used to authorize a set of known iOS devices to run and install a given iOS app. If a target device has a profile installed matching its own device Unique Device ID (UDID) and that of the app it is about to install then the device will be able to install the app. Otherwise, the device won't be able to install the app.

Types Provisioning profiles and their use

There are 4 types:

  1. Development: Used in development phase of the app to run the app on simulator and developer devices. (If a developer device is not in this list the in-development app can not be installed).
  2. Ad Hoc: Used to distribute the app to a known finite set of iOS devices outside the App Store. These are very commonly used to distribute an app to testers via a third party testing service.
  3. Enterprise: Enables large enterprises to distribute in-house applications to enterprise approved devices in a manner which is independent of the App Store.
  4. App Store: Used for App Store or TestFlight.
Adil Hussain
  • 30,049
  • 21
  • 112
  • 147
Mussa Charles
  • 4,014
  • 2
  • 29
  • 24
  • Is it true, that on every bullet point, except for 4 the app will expire after 90 days? – gundrabur Oct 03 '21 at 10:45
  • 1
    Hi, @gundrabur If you distribute your app to the App Store, the app will function as long as your developer account is active. For TestFlight yes, it's 90 days, However you can resubmit a new build to get more 90s over and over before the end of the previous 90 days. For Ad Hoc, I read [here](https://developer.apple.com/forums/thread/115245) it's limited for 1 year. For Enterprise and other types of certificates I recommend reading [official Apple Documentation here](https://developer.apple.com/support/expiration/) – Mussa Charles Oct 03 '21 at 17:56