Enrolling test devices¶
Apple ad-hoc distribution only installs on devices whose identifier is in the provisioning profile the build was signed with. Device enrollment is how you collect those identifiers without asking testers to plug their phone into a Mac.
Android needs none of this. If you only ship Android, skip this page.
Before you start: you need organization Editor or above (Manager and Admin include it) to mint an enrollment link or remove a device; organization Read only lists what is already enrolled. To register those devices with Apple you also need an App Store Connect store connection on the project plus the project access to manage it. When you're done you will have UDIDs in AppGantry and in your Apple Developer account, ready to go into a provisioning profile.
The problem this solves¶
To install an ad-hoc build, Apple requires the device's UDID to be:
- registered in your Apple Developer account,
- included in a provisioning profile, and
- that profile used to sign the artifact.
Step 3 is the one people forget. Registering a device does not fix a build you already signed. Register first, then re-sign, then re-upload.
Collecting a device¶
- From the organization's Devices page, choose Enroll a device to mint an enrollment link, and send it to the tester.
- They open it on the device, in Safari.
- iOS asks them to install a configuration profile.
- The device reports its identifier back to AppGantry.
- The device appears in your Devices list.
The link page also shows a QR code for the same URL, which is the easier route when the tester is sitting next to you: they point the device's camera at the screen instead of waiting for an email. Both lead to the same page, and the page must still be opened in Safari on the device being registered.
The enrollment link is valid for 1 hour. If a tester gets to it the next morning, send a new one — that's the expected workflow, not a failure. Generate another link on the same page mints a fresh one; the enrollment page is per-link rather than per-device, so you can hand out as many as you need.
Registering with Apple¶
Once you have devices, AppGantry can register them with App Store Connect for you, through a store connection.
The action lives on the connection, not on the device list:
- Open the project → Store connections.
- Open the App Store Connect connection.
- Under Register tester devices, choose Sync devices now.
Two things to expect from that button:
- It is all-or-nothing. The sync submits every enrolled device in the organization that is eligible. There is no per-device selection and no way to register just one.
- It reports back a summary, immediately, on the same page: how many eligible devices were considered, how many were newly registered, how many were already registered (skipped, not an error), and how many failed — with a per-device row naming the device, its UDID, its status, and the provider's detail for a failure.
Re-running it is safe: already-registered devices are skipped rather than duplicated, so the normal routine after enrolling someone new is simply to sync again.
After that, you regenerate the provisioning profile to include the new devices and re-sign your build. AppGantry doesn't sign artifacts; it distributes what you give it.
Managing devices¶
The device list shows what was enrolled, when. Reading it needs organization Read; removing a device needs organization Editor or above, the same access minting an enrollment link needs. Removing a device removes it from AppGantry, not from your Apple Developer account, where your annual device limit lives.
Apple's per-account device limits and their annual reset are Apple's rules, not AppGantry's. If you're near the limit, tidy up on Apple's side.
Recommended workflow¶
For a new tester on an ad-hoc build:
1. Create the enrollment link (valid 1 hour)
2. Tester opens it on the device, or scans the QR code
3. Project > Store connections > App Store Connect > Sync devices now
4. Regenerate the provisioning profile
5. Re-sign and re-upload the build
6. Tell the tester to install from Dashboard > My apps
Steps 4 and 5 are the ones that get skipped, and skipping them produces exactly the symptom in first-build troubleshooting: the app appears to install and then greys out.
Step 6 is a workflow, not a link you send: on a private channel there is no developer-minted install link to hand out. The tester opens Dashboard → My apps and mints their own install capability there, short-lived (about 15 minutes) and issued fresh for each install. The only link you can distribute is the one a public channel produces, and that skips tester access entirely.
Avoiding this entirely¶
Ad-hoc is not the only way to distribute:
- Enterprise / in-house distribution doesn't need per-device registration. It has its own Apple programme requirements.
- TestFlight doesn't need device registration either — but you have to submit the build to App Store Connect yourself, because publishing from AppGantry is not operational.
Ad-hoc is right when you want fast, unreviewed distribution to a known set of devices. When the device list churns constantly, the overhead is telling you to change approach.
Troubleshooting¶
| Symptom | Cause |
|---|---|
| The enrollment link does nothing | It was opened on a desktop, or in an in-app browser. Use Safari on the device. |
| Enroll a device answers Access denied | Minting an enrollment link needs organization Editor or above. The button is not hidden from a Read member, so the refusal arrives after the click, not before it |
| Remove returns to the list with the device still on it | Removing a device needs Editor or above too, and the list is re-rendered either way |
| "This profile is not valid" | The link expired. Use Generate another link. |
| The device enrolled but the build still won't install | The profile wasn't regenerated, or the build wasn't re-signed and re-uploaded. |
| Apple registration failed | Check the store connection's credentials, and whether you've hit Apple's device limit. The sync's per-device rows carry the provider's own detail. |
| The sync registered devices you didn't expect | Sync devices now submits every eligible enrolled device in the organization; there is no per-device selection. Remove devices you don't want registered first. |
| A device shows Already registered | It was already in your Apple Developer account. That is a skip, not a failure. |
| There is no Sync devices now button | The connection isn't App Store Connect. Only Apple connections register devices. |
| The tester asks for an install link | On a private channel there is none for you to mint and send — they open Dashboard → My apps, which mints them a short-lived one. |