Skip to content

Instantly share code, notes, and snippets.

@alloy
Last active August 19, 2020 03:48
Show Gist options
  • Save alloy/4952606 to your computer and use it in GitHub Desktop.
Save alloy/4952606 to your computer and use it in GitHub Desktop.
Upload iOS application for clients on their iTunes Connect account.

Obviously, the simplest solution would be for the client to share their account details or add us as ‘team admin’, but that is not what this is about.

  1. Add us to your iOS Developer Program as ‘team member’.
  2. Create a ‘Distribution Certificate’, if you haven’t got one already.
  3. Create a ‘App Store Distribution Provisioning Profile’.
  4. Export the ‘Distribution Certificate’ assets and send the export and password to us. (For security sake, it’s a good idea to send us the password via other means than the exported certificate. E.g. by phone/SMS.)
  1. Ensure all relevant contracts have been signed.
  2. Create the application record in iTunes Connect. Ensure that the app record status in iTunes Connect is ‘Waiting for Upload’.
@MonsieurDart
Copy link

Please ignore this post… there are several mistakes in it. I need to review it… Sorry about that.

I totally agree with @jstr on two points:

  • Asking a customer to create the Prov' part is usually too much (app ID… but I do think that it is usually better to let them handle the iTunes Connect (iTC) part (a lot of marketing stuff), once the App ID has been created. Just provide your client with the App ID he should use and the app version.
  • You need an iTC credential to upload the app. There can be more than one account linked to an iTC team. But, as @zen4ever mentioned, you have to have one specific email address per iTC team you belong to. :-/

Additionally, you need to be the Team Agent, not just a Team Admin, (there can be only one per team, btw your client cannot add you as a Team Agent) to create and use a Distribution Prov' Prof' to sign an app. And you also need its private key (big warning here if there are several people uploading apps for your client, they will need to share this private key, i.e. the key used to sign the Distribution Certificate).

For all those reasons, I would recommend the following process:

To be done before the development starts:

The developer:

  • Create a new email address (forwarding to your team) for your client's iTC team. Let's call it my.new.itc.account@.

The client:

  • Buy a Developer Program.
  • Wait for Apple validation…
  • Send the Team Agent credentials of this developer program (so that the developer can handle the security stuff).
  • Add an account for the email my.new.itc.account@ to your iTC. This account must have Admin or Technical role (so that the developer can upload the binary).

The developer:

  • Sign in developer.apple.com as the client Team Agent, go to the Prov' Portal.
  • If a Distribution Certificate exists, ask the client for the related private key.
  • Else, create the Distribution Certificate using a new private key (from the Keychain app). Upload this new certificate. Export the new private key to keep it safe and secure and to send it to the client (along with the password of the resulting P12 archive).
  • Create an App ID.

Once the app is ready to upload:

The developer:

  • Provide the client with the app version to be released (Xcode needs to match iTC).

The client:

The developer:

  • Create the Distribution Prov' Prof' from the portal.
  • Build, sign, archive and submit the app to the iTC using the my.new.itc.account@ account.
  • … there's no step 42!

PS: maybe the version could be given by the client and just retrieved from the iTC, by the developer.

@radeinla
Copy link

Question (forgive me if this is what you already meant, but just for clarity): Is this how you have the client receive all payments for paid apps and your account to show up as the link for the "More by Developer"?

@luvhubgit
Copy link

I do know someone who has a developer account but gets other developers to create and upload the apps for him. He says that he doesn't need to give them "Agent" access but just adds them to his "Admin" member area in order to upload the app to iTunes. I know that the apps get uploaded and are now available on iTunes because I have seen it. He has even given me access to his developer account to see for myself. But I thought only "Agent" access is allowed to upload the app to iTunes as detailed in https://developer.apple.com/programs/roles/
I have looked and searched high and low and I still don't know how can an "Admin" upload to iTunes when clearly only an "Agent" status can do this. Is there a work around to allow an "Admin" to upload to iTunes because that would be good so that clients wouldn't have to feel nervous about developers having a look at their account details etc...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment