Did you add Entitlements? Put the signing at the Target level, not the Project level? Select the Ad Hoc profile? DO a clean prior to the build? Select the Ad Hoc Device foe the build?

The best bet is to follow Apple's documentation exactly, get your build settings to exactly match Apple's.


It's a good idea to check the imbedded.mobileprovision file that comes bundled in the .app file to make sure that the UID is in there. Just do the following:

  1. unzip ProblemApp.ipa
  2. cd Payload/ProblemApp.app
  3. pico imbedded.mobileprovision

Look for the UID of your device within this file. If it's not there then it's probably not added to the provisioning file within the portal.


From the docs:

Building an app for Ad Hoc distribution is similar to building an app for App Store distribution, with an exception of two additional steps. First, you need to create an Ad Hoc Distribution Provisioning profile and add the UDIDs of the iOS devices that you want to distribute to using the iPhone Developer Program Provisioning Portal. Second, you need to create a code-signing Entitlements file. For information about how to create an Entitlements file read the Managing Application Entitlements section of the iOS Development Guide.


Managing Application Entitlements

iOS provides access to special resources and capabilities—such as whether your application can be debugged—through properties called entitlements. To specify entitlement information in your application, you add an entitlement property-list file containing entitlement definitions (key/value pairs) to your project. When you build your application, Xcode copies the file to the generated application bundle.

To add an entitlements property-list file to your project:

In the Groups & Files list, select the Resources group. Choose File > New File. Choose the iOS > Code Signing > Entitlements template. Name the file Entitlements.plist. (You can use any name; just ensure it matches the value of the Code Signing Entitlements build setting, as explained later in this section.) Set the type of the property-list file to iPhone Entitlements. With the file selected in the text editor, choose View > Property List Type > iPhone Entitlements plist.

Add your entitlement entries to the file. For each entitlement property you need to define:

Click the Add Child or Add Sibling buttons to the right of the selected row. The Add Child button has three lines depicting a hierarchy, the Add Sibling button has a plus (+) sign on it. Choose the entitlement property from the pop-up menu that appears. If the entitlement you need to add doesn’t appear in the menu, choose View > Property List Type > Default for File Type. Then enter the entitlement-key name and type.

Enter the value for the property. Set the Code Signing Entitlements build setting for the target to the name of the newly added entitlements property-list file.


Once you have created your Entitlements file and added it to your Code Signing Entitlements build setting, open the Entitlements file and add or edit the get-task-allow key and set it to false.

In addition to compressing your .app bundle to distribute your Ad Hoc build to testers, etc. it is recommended that you also compress the provisioning profile before distributing because certain email clients and servers may corrupt the provisioning profile.

For information about Ad Hoc distribution please read the Publishing Applications for Testing section in the iOS Development Guide.


I ran into this problem recently with one tester on a recent build. It turned out that my tester had reset their iPod Touch and removed the provisioning profile in the process.

Just something to consider.


I got this error by doing something dumber than anyone else has posted. I added new devices to the profile, but forgot to download the updated version, add it to Xcode, and point the project to it. When I set it up properly, testers were able to install the app fine.