Check if a UDID Is in a Provisioning Profile or IPA

See which iPhones a .mobileprovision file or an .ipa build will install on, in the browser, with Quick Look on a Mac, or with one Terminal command.

Last updated

An ad hoc or development build only installs on the iPhones listed in its provisioning profile. When a tester can't install, the first thing to check is whether their UDID is in that list.

Where the profile is

  • On its own, it's a .mobileprovision file you download from the Apple Developer website or that Xcode manages for you.
  • Inside a build, it's called embedded.mobileprovision. An .ipa is a zip file, and the profile sits at Payload/YourApp.app/embedded.mobileprovision.
  • App extensions have their own embedded.mobileprovision inside each .appex in the PlugIns folder.

1. In your browser

Drop a .mobileprovision file on our provisioning profile viewer, or a whole .ipa on the IPA inspector. Both run in your browser and show the devices, expiry date, team and entitlements. Paste a UDID to see if it's included.

2. With Quick Look on a Mac

With Xcode installed, select the .mobileprovision file in Finder and press the Space bar. The preview shows the app ID, expiry date, certificates, devices and entitlements.

3. In Terminal

Decode the profile, then list its devices:

security cms -D -i embedded.mobileprovision -o profile.plist
plutil -extract ProvisionedDevices xml1 -o - profile.plist

To check one UDID, search for it:

grep -i 00008110-001A2B3C4D5E6F7A profile.plist

For an .ipa, unzip it first:

unzip -q MyApp.ipa -d MyApp
security cms -D -i MyApp/Payload/MyApp.app/embedded.mobileprovision -o profile.plist

Reading the result

What you seeWhat it means
ProvisionedDevices with a list of UDIDsDevelopment or ad hoc. Only those devices can install it.
ProvisionsAllDevicesAn enterprise (in-house) profile. Any device can install it.
NeitherAn App Store profile. It can't be installed on test devices at all.

Also check:

  • ExpirationDate. Builds stop installing and opening once the profile expires.
  • application-identifier under Entitlements. It must match the app's bundle ID, or end in * as a wildcard.

If the UDID is missing

Registering the device isn't enough, because a profile only lists the devices it had when it was generated.

  1. Register the UDID in your Apple Developer account, under Devices.
  2. Edit the profile and regenerate it, or let Xcode's automatic signing do it.
  3. Export or re-sign the build with the new profile and send it again.

You can't add a UDID by editing the file. Apple signs every profile, and the iPhone checks that signature.

BuildFerry does those three steps for you. A tester opens your link, you approve their iPhone, and it's registered, added to the profile and the build re-signed in the cloud. Try it free.

Questions

How do I see which devices are in a provisioning profile?

Open it in a provisioning profile viewer, press Space on it in Finder with Xcode installed, or run security cms -D -i on it and read the ProvisionedDevices list.

Does registering a device add it to my existing profiles?

No. Profiles keep the device list they were generated with. Regenerate the profile after registering a device, then export or re-sign the build.

Can I add a UDID to a .mobileprovision file myself?

No. Apple signs each profile and the iPhone checks the signature, so any edit makes it invalid. Add the device in your developer account and regenerate the profile.

How do I check the profile inside an IPA?

Unzip the .ipa and open Payload/YourApp.app/embedded.mobileprovision, or drop the .ipa on an IPA inspector that reads it for you.

Send your first build