Distributing your app

Install on specific devices (Ad Hoc)

Give your MeDo app to a small, fixed group of iPhones without App Store review: register each phone, package in MeDo, and share the install link or QR code.

Updated 2026-09-14

Ad Hoc is for a known list of phones — a client demo, a five-person pilot, a trade-show device. Each phone is registered with Apple in advance, MeDo builds an app that only those phones can run, and people install it from a link or QR code. There is no Apple review, but also no way to add a phone later without building again.

If your testers change often or you cannot get their phones' IDs, use TestFlight instead — it is simpler for everyone.

Before you start

  • Apple Developer Program membership (US$99/year) — see the TestFlight guide for enrolment.
  • Your App Store Connect key (Issuer ID, Key ID, .p8 file). If you have not created one, follow Part 1 of the TestFlight guide. It must be a Team Key.
  • The UDID of every phone that will install the app (next section).
  • 500 credits per packaging run, refunded if it fails.

Apple allows 100 registered iPhones per year on your account, and removing a phone does not free its slot until your membership renews. Register only the phones you really need.

Part 1 — Collect each phone's UDID

A UDID is a phone's unique identifier — a long string of letters and numbers. Ask each tester to send you theirs:

  • With a Mac: plug the iPhone into the Mac, open Finder, click the phone in the sidebar, then click the line of text under the phone's name until it shows UDID. Right-click it → Copy.
  • With a Windows PC: plug the phone in, open iTunes, click the phone icon, then click Serial Number until it changes to UDID. Right-click → Copy.
  • On the phone alone: there is no built-in way. A quick alternative is to install the app through TestFlight instead, which needs no UDID.

Copy-paste the UDID exactly — a single wrong character means that phone cannot install the app.

Part 2 — Package in MeDo

  1. Open your Mobile project → Export installation packageiOS App tab → Packaging V… versionPublic Release / Invite TestingUse this option.
  2. On Choose a Packaging Method, select Install on Specific Devices (Ad Hoc) and click Next step.

Choose a Packaging Method with Install on Specific Devices (Ad Hoc) selected

  1. On Release prerequisites, enter your Issuer ID and Key ID and upload the .p8 file if MeDo has not stored them yet. Wait until Apple Authorization shows Completed and the certificates show Ready.

Release prerequisites showing Apple authorization completed and certificates ready

  1. On Check installable devices, click Refresh. Every phone that may install the app must be listed as Installable.
    • Missing a phone? Click Add Device, paste its UDID and give it a name (for example "Anna's iPhone"), and save. This uses one of your 100 yearly slots.
    • Manage Devices opens Apple's device list if you prefer to work there.

Check installable devices with Add Device, Manage Devices, and Refresh

  1. Click Start Packaging and wait 3–8 minutes.

Ad Hoc packaging in progress

  1. On Packaging Complete you get an install QR code, Copy Installation Link, and Download IPA.

Packaging complete with QR code, Copy Installation Link, and Download IPA

Part 3 — Testers install the app

Send each tester the installation link (or show them the QR code). On a registered phone:

  1. Open the link in Safari (other browsers will not work) and tap Install when the phone asks.
  2. Go to the home screen; the icon appears and the app downloads.
  3. If the phone shows a developer-trust message when opening the app, follow its prompts (Settings → General → VPN & Device Management → tap the developer name → Trust).

The app keeps working as long as your Apple membership and the provisioning profile are valid (profiles last about a year). On a phone that is not registered, the install simply fails — that is expected.

Adding a phone later

Register the new UDID (Part 2 step 4) and package again — an existing build cannot learn about new phones. Then share the new link. If this keeps happening, move to TestFlight.

If something goes wrong

What you seeWhat to do
"Unable to install" on a phoneThe phone's UDID is not in this build. Check for typos in the registered UDID, register it if missing, and package again.
The link does nothingOpen it in Safari, not Chrome or a chat app's built-in browser, and make sure the phone is online.
The app installs but will not openDo the Trust step in Part 3. Also check the phone can reach the internet the first time it opens — Apple verifies the certificate.
MeDo says the device limit is reachedYou have used all 100 slots for this membership year. Remove is not enough; slots return at renewal. Use TestFlight for further testers.
I revoked or lost my keyCreate a new Team Key in App Store Connect (see the TestFlight guide, Part 1) and enter it on Release prerequisites.

Official Apple references