Difference ios ipa export with development or ad hoc profile

I would like to know what is the "real" difference between an IPA exported with a development or an ad hoc profile, in a case I want to beta test an app with some user. Indeed according to what I already read ans test they seems to work exactly the same way :

  1. The provisioning profile is linked to a list of identified devices
  2. The provisioning profile have a 1 year expiration date
  3. The generated IPA can be deployed via OTA, Apple configurator or iTunes
  4. When Archive, the app is build in release mode (regarding the scheme management)
  5. The provisioning profile have a developer certificate for development or a distribution certificate for ad hoc : but it's change nothing isn't it ?

Thank you for your help 🙂

dev and ad-hoc profiles are not the same. An ad-hoc install more closely replicates a store install.


There are 4 different profiles that can be generated:

  • Development Profile: Used to install an app on a registered device in debug mode
  • App Store Profile: A profile that is used to distribute a completed app to the App Store for sale
  • In-house Distribution Profile: Only available with the Enterprise developer account type, and is used for distributing apps to non-registered devices outside of the App Store. (Example: A company would use this profile type to distribute internal apps to their employees).
  • Ad-hoc Profile: A distribution profile for distributing an app to devices registered in the developer account


Which one you use may depend on what it is you need to test with a given user. If you're trying to solve an issue with a store app, try ad-hoc. If you just want that user to provide general feedback, consider using TestFlight (dev/debug mode).

As of July 22, 2021, the explanation in the official Apple documentation for export options can be found here: https://help.apple.com/xcode/mac/current/#/dev31de635e5 - it doesn't answer this question, hence why I'm not putting it as an answer, rather just for reference.

Answering this because I had the question today and had to dig to find the answer. Sharing here, in hopes it helps someone down the road.

Per documentation in Xcode Help for "Distribution methods", it lists the types of distribution methods (App Store Connect, Ad Hoc, Enterprise, Copy App, Development, & Developer ID). To answer the question about the "Real" difference, let's take a look at the "ad hoc provisioning file" pop up (hyperlinked text in the description of the Ad Hoc method) and the "development provisioning profile" pop up (hyperlinked text in the description of the Development method) and let's compare. There may be others, but these were three differences that I was able to pull out:

1. Difference: Devices that app can run on

"ad hoc provisioning file"

An ad hoc provisioning profile is a distribution provisioning profile that allows your app to be installed on designated devices...

vs.

"development provisioning profile"

Specified devices associated with the team

The ad hoc method allows you to distribute your app to Test Flight and other sources and enables "designated" devices to run the app, including devices that aren't specifically registered to your Apple Developer Program account to run the app. (think public TestFlight testing)

2. Difference: Ad hoc provides added security

"ad hoc provisioning file"

An ad hoc provisioning profile ensures that test versions of your app aren’t copied and distributed without your knowledge.

and

When you export your app using an ad hoc provisioning profile, the ad hoc provisioning profile is included in the app bundle and the iOS App (IPA) file is signed with the distribution certificate. The app launches on a device if the app’s bundle ID matches the App ID, the signature matches the distribution certificate, and the device is in the device list of the ad hoc provisioning profile.

The ad hoc method provides more security in the builds that are exported from your archive. That security comes in the form of

3. Difference: Development allows apps/services to work in a Dev env.

"development provisioning profile"

A development provisioning profile allows your app to launch on devices and use certain app services during development.

And

"ad hoc provisioning file" pop up

An ad hoc provisioning profile is a distribution provisioning profile that allows your app to... use app services without the assistance of Xcode.

While it's not explicit about which app services are enabled for use during development, it is a difference between the two. I believe entitlements and services such as push notifications, IAPs, would likely fall under this umbrella. Also, the explanation for the ad hoc method leads me to believe that some services can't work correctly outside of having the help of Xcode until they're "graduated" to be built in an ad hoc method.

Though both profiles looks same, they are different w.r.t to the purpose and distribution. Both profiles allows to confine to install on only selected/ registered devices only. But the purpose of development profile is for development and debugging purpose by using dev signing cert where as adhoc profile is for distribution purpose such as to adhoc testers and TestFlight distribution with signing distribution certificate. As the type of signing certificate is different in both cases, adhoc profile stands similar to Appstore profile with distribution certificate and features such as Push notifications pointing to APNS prod instance can be tested before releasing app to store.

Difference ios ipa export with development or ad hoc profile
 
 
Q