When uploading your package for notarization,
altool could fail with the following error message:
Error: Your Apple ID account is attached to other iTunes providers. You will need to specify which provider you intend to submit content to by using the -itc_provider command. Please contact us if you have questions or need help. (1627)
This usually happpens if you use your Apple ID for uploading something else than software. Examples are books (for Apple Books) and music (for Apple Music and/or iTunes Store). In this case, you would need to specify which provider name are you using.
These provider names are unique, dependent on the account and which store that it is for. That is, Apple will create one string for the entity that uploads stuff to the App Store and another string for the Apple Books store. If you sign up to the stores as a natural person (instead of an organization), these strings woould be derived from your legal name and be unique to your account.
Since you’re using
altool, you’ll want to use the provider name associated with the App Store. Even though your intention of notarization is for Developer ID distribution outside the App Store.
Confused? Read on and you’ll be notarizing your binaries in no time. I’ll show you how to get all provider names associated with your account and select which one to use to continue with notarization.
Be sure to have these on-hand, which you probably have since you’re already using
- Xcode – I’ve tested this guide on version 11.0 but any newer version should work.
- Your Apple ID user and password.
- An app-specific password for your Apple ID.
- A web browser and working Internet connection.
Listing Provider Names
You can get the list of provider names attached to your account by running
iTMSTransporter from the command-line. This is a Java program embedded in Xcode which it uses internally for uploading to the App Store. Apparently this program is also used for media labels to upload music and videos to Apple.
/Applications/Xcode.app/Contents/Developer/usr/bin/iTMSTransporter -m provider -u "email@example.com" -p "app-specific-password"
Be sure to replace your Apple ID and your app-specific password as appropriate.
The command would return a listing like the following:
- Long Name - - Short Name - 1 Your Name YourName 2 Your Name|123456789 YourName123456789
What you want is to pick out the short name listed and use it as a parameter to
altool for specifying the provider name.
Picking the Right Provider Name.
Follow these steps to select the right provider name
- Login to App Store Connect.
- In the top-left drop down select “Users and Access”.
- In the list of all users, select “Account Holder”
- Select the account holder.
- The provider long name would be shown in the middle section in a heading font.
Notarizing The App
Finally add the provider name as a parameter to
altool. Despite what the error message said, the parameter to specify the provider name is
-itc_provider. Probably because
altool is a wrapper for the Java-based
iTMSTransporter and the two development groups haven’t gotten around to synchronize the error message to the parameter.
Run a command like the following to notarize your bundle. Notice the new argument
--asc-provider which has the the provider short name as its parameter.
xcrun altool --notarize-app --primary-bundle-id com.example.YourApp -u "firstname.lastname@example.org" -p "app-specific-password" --asc-provider "ProviderName123456789" --file YourAppBundleCompressed.zip
Remember to replace the parameters like bundle identifier and Apple ID credentials as appropriate. Also note that
altool takes a single file as an argument, hence you’ll need to zip your bundle or enclose it in a disk image.