Short answer: an IPA installs on an iPhone only if it was signed for that device. The easiest way is an install link from the developer, opened on the iPhone itself. On a Mac you can also add the IPA with Xcode Device Hub or Apple Configurator. On Windows there is no Apple tool for this — use the link.
This guide is for developers and the people who test their apps: QA, clients, colleagues. It covers your own builds, distributed within Apple’s rules. If you’re looking for a way to install someone else’s app outside the App Store, this isn’t it — and doing that with a developer certificate is a reliable way to get it revoked.
Before you start: three things that must be true
- The device is registered for this build. Development and Ad Hoc builds run only on devices listed in their provisioning profile[1]. If you haven’t sent the developer your UDID yet, start with how to find your iPhone UDID.
- Developer Mode can be turned on. Apple requires it to run an app installed from an IPA on iOS 16 and later[2]. See how to enable Developer Mode — including why it can take an hour.
- The iPhone is online the first time the app opens. Development and Ad Hoc apps check in with Apple on first launch; if that connection fails, the app may not launch[3]. Corporate Wi-Fi that blocks
ppq.apple.comcan cause this.
Method 1: an install link, right on the iPhone
This is how most testers install builds, and the only practical option without a Mac. The developer (or a distribution service) hosts the IPA and gives you a link.
- Open the link on the iPhone, in Safari.
- Tap Install and confirm. The app icon appears on the Home Screen and fills up as it downloads.
- Open the app. If iOS asks for Developer Mode, turn it on, restart and open the app again.
Under the hood, such links usually use Apple’s over-the-air install format: an itms-services:// link pointing to a small manifest file on an HTTPS server, which tells the device where to download the IPA[4]. Despite the name, the App Store isn’t involved.
With AppSign, testers get this as an app catalogue: the developer uploads builds, AppSign signs them for every registered tester, and each update installs from the same place.
Method 2: Xcode Device Hub (Mac)
In Xcode 27, Device Hub replaced the Devices and Simulators window.
- Connect the iPhone and pair it: Xcode → Open Developer Tool → Device Hub, tap Trust on the device, then Pair if asked[5].
- Select the device in the sidebar and open Apps in the inspector.
- Click Add (+) below the list, choose the
.ipaand click Open[6].
On Xcode 26 and earlier, the same list is under Installed Apps in Window → Devices and Simulators.
Method 3: Apple Configurator (Mac)
Handy for installing one build on several connected devices at once.
- Install Apple Configurator from the Mac App Store and connect the devices.
- Select the devices, then choose Add → Apps (or drag the IPA onto them).
- Click Choose from my Mac, select the
.ipaand click Add Apps[7].
When the app won’t install or won’t open
These are the cases our testers bring to support most often. iOS rarely says what is really wrong, so here is what each symptom usually means.
The icon stays grey, or “Unable to Install”
The download starts, then stops: the icon remains grey, or iOS shows “Unable to Install ‘App’”. Almost always, this device isn’t in the build’s provisioning profile. Either the UDID was never added, or the tester sent the UDID of a different device — an old iPhone, an iPad instead of the phone. Check the UDID, have the developer register it, and install a new build: a build signed before the device was added won’t work, even from the same link.
“This app cannot be installed because its integrity could not be verified”
The underlying error in this case is typically “A valid provisioning profile for this executable was not found”[9]. iOS can’t match the app to a valid profile for this device. The usual causes, from most to least common:
- the device isn’t registered, or a different device was registered;
- the profile is out of date or has expired — profiles are typically valid for no more than a year[1];
- the signing certificate was revoked. This is the worst case: every build signed with it stops working, and the developer has to sign again with a new certificate.
“Developer Mode Required”
iOS installed the app but won’t run it until Developer Mode is on. Settings → Privacy & Security → Developer Mode, restart, confirm. Full walkthrough: iPhone Developer Mode.
“Untrusted Enterprise Developer”
This message belongs to apps signed with an Enterprise (in-house) certificate. To trust the developer: Settings → General → VPN & Device Management, choose the developer under Enterprise App, tap Trust; on iOS 18 and later, then tap Allow & Restart. The device must be online[10]. Only do this for your own company’s apps — the trust applies to everything that developer signs.
“App is no longer available”
The app worked before and now refuses to open. This usually means the provisioning profile or certificate it was signed with has expired or been revoked. The fix is on the developer’s side: a newly signed build.
The iOS version is too old
Every build has a minimum iOS version, and older devices simply can’t run it. Very old iOS versions may not even open modern install pages properly. Testers tend to ignore the “update iOS” step and are then surprised the app won’t install — check the version first.
The app installs, opens and immediately closes
Signing and registration are fine, but the app crashes on launch — even though it runs on the developer’s own phone. This is the hardest case, because it is usually a problem in the build itself rather than in distribution. Things worth checking:
- the build uses a capability (push notifications, app groups, iCloud) that isn’t enabled on the App ID or in the profile — every entitlement the app claims must be allowed by its profile[1];
- the configuration differs from the developer’s debug run: a release-only setting, a missing resource, an environment variable that exists only in Xcode;
- the device’s iOS version or model is one the developer never tried.
Ask the tester for the crash log (Settings → Privacy & Security → Analytics & Improvements → Analytics Data) and try the exact same IPA on a registered device of your own.
Quick reference
| What you see | Most likely cause | Who fixes it |
|---|---|---|
| Grey icon / “Unable to Install” | Device not in the profile, or the wrong device was registered | Tester sends the right UDID; developer re-signs |
| “Integrity could not be verified” | No valid profile for this device: not registered, expired, or certificate revoked | Developer |
| “Developer Mode Required” | Developer Mode is off | Tester |
| “Untrusted Enterprise Developer” | Enterprise app not yet trusted | Tester, in Settings |
| “App is no longer available” | Profile or certificate expired or revoked | Developer |
| Won’t open the first time | No connection to Apple on first launch | Tester: connect to another network |
| Crashes on launch | Problem in the build or its capabilities | Developer |
Where AppSign fits
Most of the table above comes down to one thing: keeping devices, profiles and builds in sync. AppSign does the signing for every registered tester and every new build, so testers install from one catalogue instead of chasing new links — and when something does break, it’s easier to see whether the cause is the device, the certificate or the build.
- Apple — TN3125: Inside Code Signing: Provisioning Profiles
- Apple — Distributing your app to registered devices
- Apple — Provisioning profile updates
- Apple — Xcode Help: distribute over the air (legacy)
- Apple — Managing devices in Device Hub
- Apple — Managing apps on devices
- Apple — Apple Configurator: Add apps to a device
- Apple — Apple Devices User Guide for Windows
- Apple Developer Forums — install error logs; A valid provisioning profile … was not found
- Apple Support — Install custom enterprise apps on iOS, iPadOS and visionOS