Peter Levine
Peter Levine

Reputation: 281

Submitting an App to the App Store that uses iCloud, invalid entitlements

I have an app I tried to submit to the app store. Like many others I'm getting the following e-mail from the app store approval process. The answer to the other questions seems to be, uncheck iCloud from the App ID, but my app uses iCloud and I wouldn't want to lose that functionality. Has this been solved yet?

I did double check that my App ID's Bundle Identifier matches the value of the items that are entered in the Entitlements area of the Target Project. Thanks for your help!

Dear Developer,

We have discovered one or more issues with your recent binary submission for "XXXXXX". Before your app can be reviewed, the following issues must be corrected:

Invalid Code Signing Entitlements - The signature for your app bundle contains entitlement values that are not supported. For the com.apple.developer.ubiquity-container-identifiers entitlement, the first value in the array must consist of the prefix provided by Apple in the provisioning profile followed by a bundle identifier suffix. The bundle identifier must match the bundle identifier for one of your apps or another app that you are permitted to use as the iCloud container identifier.

Specifically, value "XXXXXXX.com.xxxx.xxxxxx" for key "com.apple.developer.ubiquity-container-identifiers" in WeHeartApps is not supported.

Once these issues have been corrected, go to the Version Details page and click Ready to Upload Binary. Continue through the submission process until the app status is Waiting for Upload and then use Application Loader to upload the corrected binary.

Regards,

The iTunes Store Team

Upvotes: 1

Views: 956

Answers (2)

Alex Ross
Alex Ross

Reputation: 3839

For others who have apps sharing data between both Mac and iOS devices via iCloud, you will also run into this problem if you try to submit the platform which depends on the other's bundle identifier first. This is because the bundle identifier you're trying to share data with has not yet been registered as an app.

The solution is simply to submit the app whose bundle identifier you're using as the com.apple.developer.ubiquity-container-identifiers entitlement first.

For example, if you're sharing data between a Mac app with a bundle identifier of com.mycompany.osx, and an iOS app with a bundle identifier of com.mycompany.ios, you will likely choose one as the mutual data store. If you choose the iOS version, the your Mac app will have the value "com.mycompany.ios" set as your ubiquity storage and iCloud key-value storage. In this case you just need to submit the iOS app first so that the "com.mycompany.ios" bundle identifier registers as a valid app on Apple's side.

Upvotes: 3

Peter Levine
Peter Levine

Reputation: 281

Found the answer, it seems as though my Provisioning and Distribution Profiles were out of sync. When in doubt;

  1. delete your provisioning and distribution profiles on the iOS provisioning portal
  2. recreate them on the iOS provisioning portal
  3. Delete the old ones locally.
  4. Download the new ones from the portal.
  5. Clean the project
  6. Drag the new profiles onto the xcode app
  7. Do a fresh "Build for Archiving." ( Make sure iOS device is selected for this to be enabled )
  8. Finally archive
  9. Go to the organizer and Validate the Archive
  10. Submit to the app store!

Cheers

Upvotes: 3

Related Questions