The full message reads "This app cannot be installed because its integrity could not be verified." Newer iOS versions say "This app was not installed because its integrity could not be verified."
On an iPhone set to another language you'll see the same error in that language, for example:
- German: "Diese App kann nicht installiert werden, da ihre Integrität nicht überprüft werden konnte" (also seen with "verifiziert").
- French: "Cette app ne peut pas être installée car son intégrité n'a pas pu être vérifiée."
It isn't a virus warning and it isn't your network. While installing, iOS checked the app's signature and its provisioning profile, and they don't allow this app on this iPhone.
If you're the tester
There's no setting on the iPhone that fixes this. The build has to be signed again for your device.
- Send the developer your UDID. Our free UDID finder shows it in Safari in under a minute.
- Ask for a new build or a new install link once your iPhone is added.
- If the link came from BuildFerry, wait until the developer approves your iPhone, then tap Install again.
If it's a TestFlight app, update the TestFlight app and ask the developer to upload a new build. Apple has had short-lived TestFlight problems that showed this message, and a new build was the fix.
If you're the developer: the causes, most common first
1. The iPhone isn't in the provisioning profile
Apple's install troubleshooting note lists this first: a test build was installed on a device whose UDID isn't in the app's embedded profile.
Registering the UDID isn't enough on its own. A profile only lists the devices it had when it was generated, so after registering you need to regenerate the profile and export the build again. Check which devices a build includes.
2. The wrong kind of profile
A build signed with an App Store profile can't be installed on test devices. It can only be uploaded to App Store Connect. Export with Release Testing (called Ad Hoc in older Xcode) for testers. How the profile types differ.
3. Entitlements the profile doesn't allow
Every entitlement the app claims, such as push notifications or App Groups, must be allowed by its profile. Adding a capability after the profile was made is a common way to break this. Regenerate the profile after changing capabilities.
App extensions are signed with their own profiles. Each one must also include the iPhone.
4. A revoked or expired certificate
Profiles that contain a revoked certificate stop being valid. Create a new distribution certificate, regenerate the profile and sign again.
5. The .ipa changed after signing
Editing anything inside the app after it's signed, even its Info.plist, breaks the signature. Make the change before signing, or sign again.
Find the exact cause
- Connect the iPhone to a Mac and open the Console app.
- Select the iPhone in the sidebar and start streaming.
- Try the install again and look for messages from
installd.
A line such as "A valid provisioning profile for this executable was not found" means the profile doesn't cover this iPhone or this app.
Never see it again
With BuildFerry, a tester can't reach Install until their iPhone is in the profile. They open your share link, you approve the iPhone, and BuildFerry registers it with your Apple account, regenerates the profile and re-signs your build in the cloud. A new tester never means a new export. Start free.
If the build is already signed for your testers, quick share gives you an install link with no Apple key, and shows how many devices its profile includes.
Questions
How do I fix "This app cannot be installed because its integrity could not be verified"?
On the iPhone, you can't. The developer has to sign the build for your iPhone: register its UDID, regenerate the provisioning profile and export or re-sign the app. Then install it again.
Why does the app install on one iPhone but not another?
The iPhone that works is in the build's provisioning profile and the other isn't. Each ad hoc or development build only installs on the devices listed in its profile.
Does turning on Developer Mode fix it?
No. This message comes from the signature check during installation. Developer Mode only controls whether some test builds can open once they're installed.
Is an app with this error dangerous?
Not necessarily. It means iOS couldn't confirm the app is signed for your iPhone. Only install test builds from developers you trust.