Question

I know this has been talked before, but I don't know if this changes with recent changes in the App Store.

I'm a freelance developer, and as such I develop apps for many different clients, each of which have their own Apple Developer accounts to sell their apps on the App Store.

I know I can't upload the app myself for my client (not without their private key) I'm looking for an "easy" way to get the app on the App Store with as less effort as possible for the client side.

Options I can think of:

  • Getting the private key and credentials for the client and upload it for them. But I would like to avoid that.
  • Client adds me as a member of their iOS team, set me as a developer for the app and I download the provisioning profiles and somehow send them a file they can resign and upload to the store.
  • I upload the app to my account and then use the new transfer funcionality to put it under the client name.

I don't know, there HAS to be a way, hasn't it?

EDIT: I seem to have found a way, its described in my answer.

Was it helpful?

Solution

I'm sorry I didn't accept any of the answers yet, but I've been trying some stuff and I think I found a way, a little strange and probably not optimal, but it could work and I would like to share it with you to see if you think it's ok.

First: I'm a developer with my own Apple ID and developer certificate. I have my own apps on the app store.

Second: I also make client work and then I want to upload and manage the apps I do for them, to a certain extent.

Third: My client has to have their own developer account and it has to be a company account, which will allow them to manage teams.

This is what I think that works:

  1. I ask my client to add me to their iOS Developer Team as an "admin". This is done through the member center. This allows me to create distribution certificates and distribution provisioning profiles, as stated in here.
  2. After I accept the invitation (can't remember if I really have to) I log into the member center. It will ask me to select the team I want to use for my session (my own team or one of my clients'). I choose my client's team.
  3. I go to Certificates and create a new Certificate for Production->App Store and Ad Hoc (I think there's a max of two per account, so if there are already two of them this option will be grayed out)
  4. I have to upload a CSR file generated from my computer's keychain, following on screen instructions, and then my certificate is ready to download and use.
  5. While I'm on member center I generate my AppID and then go to Provisioning Profiles and generate a new Distribution Profile for the App Store with my AppID and for the certificate just created.

That's it for member center, now I can download the distribution profile for the app I'm am developing for my client. Or let XCode 5 manage it.

Then I want to upload the app to the store and manage it with iTunes Connect with my own account.

  1. I ask the client to iTunes Connect -> Manage Users -> iTunes Connect User and add me with a Technical role. This allows me to manage apps, but I wont see anything about banks, contracts, payments...
  2. The problem with point 1 here is I already have an iTunes Connect account for myself with my email address and you can't have two iTunes Connect accounts linked to one email address. I could use a different address, but as I'm using gmail, I just use an alias. I give them the address: myemail+clientname@gmail.com
  3. Once invited, I receive an activation mail and then I can log into iTunes Connect with that address and create apps and set them ready to upload.
  4. Then I just have to go to Xcode, select my client's code signing identity (which is the certificate I created), the apps distribution provisioning profile (I created earlier too), archive, validate and submit to the app store with my alias for this client.

I've just tested it and it works.

It's not yet an optimal solution because when logging into iTunes Connect I can see every other app my client has and I could, potentially, delete something. But still, I think is a pretty good one for clients with no knowledge of XCode (or no interest in doing all this) but also wanting to keep their credentials and private keys secret.

OTHER TIPS

I recommend asking the client to add you to his dev center team as well as a iTunes Connect user , you can then take over the uploading and make the app uploading part smooth.

If the client has a Mac and already knows how to upload apps.. you could just send xcode archive for him/her to upload.. this though might make the process slower due to communication/other things.

Transferring ownership isnt an optimal solution since after transferring, next updates would require client keychain and provisioning profile which will bring you back to step one.

I think the approach should vary for the technical ability for your clients. Having them export a "Developer Profile" of all the certificates would allow you to manage the process.

If they are comfortable downloading XCode and submitting the app then you can just become a member of the team or just send them the Xcode project with instructions to change the code signing in build settings.

Without a private key, you can't submit and sign the app.

Exporting a Developer Profile in Xcode 5

  • In the Xcode Preferences window, click Accounts.

  • Click the Action button (to the right of the minus button) in the lower-left corner.

  • Select Export Accounts from the pop-up menu.

You will then be allowed to password protect the .developerprofile

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top