Exercise 2: Diagnosing a Beta Tester's Failed Install — Possible Solution ============================================================================== The chapter's own real device-limit table draws a sharp distinction: Development and Ad Hoc provisioning profiles are genuinely limited to a specific, named list of registered device UDIDs, while App Store and Enterprise profiles carry no such limit at all. A beta build - the kind sent directly to a tester rather than distributed through the App Store - is almost always signed with an Ad Hoc profile. Given that, the single most likely cause of the described failure is that the tester's own real iPhone was never actually added to the Ad Hoc profile's device list in the first place. The build itself can be signed completely correctly - a valid certificate, a valid App ID, a genuinely working provisioning profile - and it will still refuse to install on that one specific device, because the profile explicitly does not authorize it. The real fix follows directly from the diagnosis: register the tester's own device UDID with the Apple Developer account, regenerate the Ad Hoc provisioning profile so it now includes that UDID, and rebuild the app using the updated profile. Simply resending the exact same, already-built IPA file will not fix anything, since the profile embedded inside that build is the one still missing the device. ANSWER: The most likely cause is that the tester's own device was never added to the Ad Hoc profile's real, specific list of authorized devices - Ad Hoc profiles enforce a device limit that App Store profiles don't. The fix is to register the device's UDID, regenerate the Ad Hoc profile to include it, and rebuild the app with the updated profile, rather than resending the existing build. WHY THIS WORKS AS AN ANSWER ------------------------------ This correctly identifies the device-registration gap as the real cause (rather than a signing error) using the chapter's own established distinction, and explains why rebuilding - not just resending - is the actual fix.