56
votes

I've got the following warning while uploading a new version of the application:

WARNING ITMS-9000: "Potential Loss of Keychain Access. The previous version of software has an application-identifier value of ['52T2NMS37N.com.(my-app-id)'] and the new version of software being submitted has an application-identifier of ['FCGA72C62G.com.(my-app-id). This will result in a loss of keychain access. For more information, please consult (url)".

The issue may be because the application was transferred into another account.

The build was uploaded with the warning, but what does it mean?

6
The good explanation is here: stackoverflow.com/a/23877303/540639deko

6 Answers

61
votes

From Apple's Documentation Archive, on Resolving the Potential Loss of Keychain Access warning

Potential Loss of Keychain Access. The previous version of software has an application-identifier value of 'A1B2C3D4E5.com.company.app' and the new version of software being submitted has an application-identifier of '5E4D3C2B1A.com.company.app'. This will result in a loss of keychain access.

Note: This is a warning, not an error. You have the option of proceeding with the submission regardless of this warning, however this document should be used to determine whether you can safely ignore it. This warning indicates that the App ID prefix of the pending submission differs from the App ID prefix of the live app in the app store.

Important: The only apps that can safely ignore this warning are those that do not use technologies that rely on the App ID prefix, like keychain access, Handoff, and UIPasteboard sharing.

Note: Apps that are migrating their App ID from an arbitrary Bundle Seed ID to their more-modern Team ID should expect this warning, and proceed with the submission.

For apps that do utilize technologies that rely on the App ID prefix, this warning should not be ignored. The Potential Loss of Keychain Access warning is an indication that the app was code signed with the wrong provisioning profile.

To resolve the problem:

  1. You must locate or re-create a provisioning profile that uses the correct App ID prefix on the Certs IDs & Profiles website.
  2. Click Edit on the profile to be certain the prefix is correct.
  3. Click Download and save the profile to disk.
  4. Optionally double check the App ID Prefix on the downloaded profile using the Terminal command in: How do I check the entitlements associated to my Provisioning Profile?
  5. Drag the profile onto the Xcode icon on your Dock to install it.
  6. Re-submit the app and code sign it with the newly restored profile that is associated to the right prefix.

"Keychain access" refers to all the functions in the Keychain Services Reference.

6
votes

I think that the prefix is relationship to Apple Id. I migrate my App to other Apple Id and when i re create the App Id, was created a new prefix Id.

6
votes

This error happened when I tried to submit an update my app. I got this working by setting the Provisioning Profile to a specific one instead of the default 'Automatic' setting which seems to use some default XC one.

Select Provisioning Profile

2
votes

I had same issue, finally resolved by deleting the provisional profile at ~/Library/MobileDevice/Provisioning Profiles. and then downloading new from developer profile.

Go to the Finder then List item From the “Go” menu navigate down to “Go to Folder” or Hit Command+Shift+G from the Mac OS X desktop or a Finder window

Search below Path ~/Library/MobileDevice/Provisioning Profiles

Delete the profile which has wrong Bundle ID, if you click on file MacOS X will show details. You can verify the bundle ID.

2
votes

If you have transferred your app from once organisation to another :

Note : A one-time loss in keychain data will occur if you switch your App ID prefix

https://developer.apple.com/library/archive/technotes/tn2311/_index.html#//apple_ref/doc/uid/DTS40014135-CH1-A_ONE_TIME_LOSS_IN_KEYCHAIN_DATA_WILL_OCCUR_IF_YOU_SWITCH_YOUR_APP_ID_PREFIX

0
votes

I had the same warning. In my case I have a wild card application identifier.

So first of all I found this appID '5E4D3C2B1A.com.company.app' and removed it. Then I created new appID, but change teamID to 'A1B2C3D4E5'. As result I got a correct appID like this 'A1B2C3D4E5.com.company.app'. Then I regenerate all provision profile and everything works well. App didn't have strange behaviour in production.

But, pay attention please, I did it with wild card and I'm not sure if everything will be well with explicit application identifier.