Added a tester's iPhone? Getting a build that installs, with or without a rebuild
· 5 min read
A new tester joins, or someone gets a new iPhone, and the ad hoc build you shared last week will not install. iOS says the app cannot be installed or that its integrity could not be verified. The build is fine; it just does not know about this iPhone. An ad hoc build carries a fixed list of devices in its provisioning profile, and that list was set when the build was signed. Getting the tester a build that installs takes four steps, and the last one is where you choose between building again and re-signing.
Step 1: get the UDID
Every iPhone has a UDID, a long identifier Apple uses for device lists. The tester can open appforshare.io/udid in Safari on the iPhone, install a small profile that only reads the identifier, and send it to you; no account is needed. On a Mac, Finder or Xcode also show it when the phone is connected. Apple allows 100 devices of each type (iPhone, iPad and so on) per membership year, and removing a device does not free its slot until the year renews, so register testers who will really test.
Step 2: register the device on Apple
In the Apple Developer portal, open Certificates, Identifiers and Profiles, then Devices, and add the UDID with a name you will recognize later. The App Store Connect API can do the same.
On AppForShare Pro you can skip the copying: send the tester an onboarding link, and AppForShare saves the device and registers it on Apple with your App Store Connect key in one click.
Step 3: make the profile again
This is the step people forget. Registering a device does not add it to existing profiles. Edit the ad hoc profile for the app, tick the new device, save and download it. If the app has extensions, each extension's profile needs the device too. With your App Store Connect key connected, "Add new devices" on AppForShare Pro remakes the ad hoc profile with every registered device in one click.
Step 4: rebuild or re-sign
The build you shared still has the old profile inside, so installing it again will never work. You need a build signed with the new profile, and there are two ways to get one.
| Build again | Re-sign the existing build | |
|---|---|---|
| What you need | The source code, Xcode or CI, and the new profile | The .ipa, the signing certificate (.p12) and the new profile |
| Time | As long as your build takes | Minutes |
| What testers get | Whatever is on the branch now | Exactly the app they were testing |
| Best when | The code has moved on anyway, or entitlements changed | A client or QA round must test the same build, or no build machine is at hand |
Re-signing keeps the compiled app and swaps the signing. It needs the certificate and profile to match (same team, profile includes the certificate, bundle ID matches, one profile per extension), and it does not work for apps downloaded from the App Store. The details are in re-sign an IPA with a new provisioning profile.
On AppForShare: by hand on Pro
Once an Owner or Admin has added the signing certificate (.p12) in Settings, iOS re-signing, open the build and choose "Re-sign with a new profile". AppForShare picks the best matching ad hoc profile from your connected Apple account, or you upload the .mobileprovision files yourself. It checks that everything matches before signing, then saves a new build of the same app with a new link and a new SHA-256. Bundle ID, version and build number stay the same, and the original build, its link and any sign-offs stay as they were. Send the tester the new link. From the CLI it is appforshare resign <id|slug> --yes.
On AppForShare: end to end on Team
On Team, Hands free does all four steps without you. The tester opens the onboarding link; AppForShare registers the iPhone on Apple and remakes the ad hoc profile. Then, if the project has a GitHub iOS build, Hands free starts that build. If it has none, Hands free re-signs the newest iOS build of the project with the new profile, and each enrolled tester gets an email with the install link when the re-signed build is ready. If something fails, for example the certificate has expired, the owner gets one email saying what went wrong.
Before the tester taps Install
A tester who checked their iPhone once at /udid can tap Remember this device. From then on, AppForShare iOS install pages say whether the build includes that iPhone before they try. On your side, the free IPA inspector lists the devices in any .ipa in the browser. If the install still fails, go through integrity could not be verified.
Common questions
Does the old link start working once the device is registered?
No. The old build keeps its old profile. The tester needs a build signed with the new profile, either rebuilt or re-signed, and that build has its own link.
Do I need a Mac to re-sign?
Not on AppForShare: signing runs on our servers. You need the .p12 once, exported from a Mac's Keychain Access or made by your team's certificate owner.
Will the tester lose their data in the app?
Usually not. The re-signed build has the same bundle ID and team, so it installs over the existing app.
Can I avoid the device list altogether?
TestFlight and enterprise builds do not use one, with their own rules. See TestFlight alternatives.
More on the features: re-sign iOS builds, iPhone registration and the re-signing docs.


