Publish iOS app to App Store on behalf of client - ios

I have
An apple id
The source code
A Distribution Certificate generated for my apple id using client's developer portal
A Provisioning profile for the newly created App ID and my distribution certificate
My client dont want to share his apple id credentials with me. I am able to archive the product in Xcode, but am not able to submit it to App Store.
Can i directly submit it to the store with the above details i've got?
Or Can i build IPA file and share it with client, so he can submit to App Store?
Is there any other alternative ways we can submit the app to store (other than sharing his credentials)
Kindly explain the answer (with step by step guide if possible).
Thanks

For those who needs to do the same on behalf of clients, here are the steps i've followed...
What i had
An apple developer account (with no Developer Program Enrollment)
What client had
An apple developer account (with Apple Developer Program Enrollment for Company)
As far as app distribution is concerned, apple have 2 systems: Member Center (for Certificates, Profiles, App IDs etc) and ITunes Connect (for publishing your app to app store and further management of the app).
I need access to both ITunes Connect & Member center for distributing on behalf of client.
In Member Center, client should give you Team Admin Role. [steps]
In ITunes connect, client should give you Developer Role / Admin Role for the app. If Developer Role, given u can only upload the build, to submit app for review you'll need to ask the client. If Admin role, basically you can do almost everything upto Submitting the app for review. [steps]
Now you can create certificates, profiles, app ids through Member Center (you can create certificates & profiles in Xcode also. But App IDS should be created through Member Center).
Create App Record in ITunes Connect using the same bundle ID used for App ID creation.
Upload your build through Xcode
Submit for review through Itunes Connect
This is what i did for submitting the app. If you find any mistakes/better alternatives, pls comment below, so i'll update the answer.

You'll need to do the following:
Build the app using the distribution cert of the client
Archive the app using XCode (it's in the same menu as the build
options)
When the archive is done it will open the Archive
Organizer
Select the newly created archive and export it. The
first option in exporting is the 'Save for iOS App Store
Deployment'.
This will create a directory on your mac that contains the bits
and pieces your client will need to upload it.
Zip that directory and transfer to your client. They should be able
to use the web-interface in iTunes connect to upload the app and
complete the app submission process.

... Or Can i build IPA file and share it with client, so he can submit to App Store?
To answer your question, you can build the app and provide to your client for them to submit the app.
For building the app (.ipa) you need to get the Provisioning profile & Certificate (.p12) corresponds to Apple developer program from the client.
I have done this for many of our clients and solution is working. In fact few of the clients they have an internal portal with the predefined process.
In case, if anyone of you have queries on this response comment below and I shall try to answer.
Note: when signing remember to choose use local signing assets in order to avoid giving apple id credentials.

The easiest way would be to have your client add you under User and Roles in iTunes Connect. There is a developer role now that can limit access to a certain app and restricts it to the below:

As of Summer of 2017, Which is after this was initially asked) The developer and the app producer name must be the same. Thus just have them spend the
$99 a year and get a Dev account that they add you to to Develop / manage.
Here is a short and detailed explanation: [1]: http://www.goodbarber.com/blog/your-client-s-developer-accounts-vs-your-own-a856/
Here is how to tranfer if already in app Store under your account:[1]: https://support.appmachine.com/hc/en-us/articles/360000012284-Transfer-your-app-to-another-iOS-Developer-Account

You need to use IP distribution with iOS to build IPA to upload to the App Store

According to the description the simplest way would be to submit the app on your own behalf and as soon as you pass the certification to transfer the published app to your client from iTunes Connect dashboard.

Related

Difference between iTunes Connect accounts/roles and Apple Developer account

I'm very confused by how Apple handles this. Here is my situation:
Im a solo IOS developer with a paid Apple Developer account. I can access iTunes connect and upload apps there, this works fine. I pick "manage signing automatically" in XCode using "IOS Developer" Code Signing identity.
So this works.
An organization Im working for invited me in iTunes connect. So I can create apps for them on them too. Now I have two things on my account there.
How can I upload an app for their account? I cant seem to transfer an existing app and I cant seem to sign it with an identity which matches their profile/account/whatever.
The process appears confusing but actually it isn't. Lets walk through it:
First you create an AppleID. You then use that AppleID to register for a Developer program. Registering to a developer program gives access to two types of accounts. Or rather say that you are provided with the access to two different portals for the same account. One is developer portal and other is iTunes Connect. For background work like registering an AppID, testing devices and managing certificates and profiles you use Developer Portal. For frontend work like creating an app to be published to the AppStore, uploading your build, distributing it for testing you use iTunes Connect portal.
Now if you are being invited by some other organisation in its developer program with the same AppleID, you have two accounts linked to the same AppleID. Now when you login to the developer portal you are logged in to the one account automatically and you can change to the other by selected from a dropdown at the top right. Once you have selected the organisation you then continue working same when you worked previously with a single account.
Here is the screenshot of my developer dashboard with multiple accounts:
Hope this clarifies.
The team agent can initiate the app transfer.
Steps:
My Apps
Select your app
Scroll to the Additional Information section
and click Transfer App, then click Done.
See more details on app transfer here
To sign an app you need provisioning profile and signing entity (.p12 file)
Or Apple Developer Account access from where you can generate certs and provisioning profile and download
After getting signing identity and provisioning profile from Apple Developer Account perform following steps
Archive App
Open Organiser (Xcode >> Window >> Organiser)
Select app and version you want to upload
Click Upload to App Store and follow instructions

Can you use different account from developer's account to submit to app store

I am doing an iOS project for a client and they gave me access to their developer program and iTunes Connect (which actually only have one app in store, the one I'm developing). Unfortunately, because my main account has already been associated to another iTunes Connect, I gave them another account which I created just for using their iTunes Connect. When I tried submitting the app to the store for Beta Testflight, it said that I don't have the rights to do so. So, how do I use a different iTunes Connect to submit to the store? If I can't do that, is there any other way besides making a new Apple account and having to ask the client to invite it again to both the developer's program and iTunes Connect (and also setting it up again from making a certificate, provisioning profiles, etc)?
Thanks in advance.
I ran into the same problem with a project.
It worked when i archived the application and uploaded it to iTunes connect using apple's application loader, you can sign in with the account you want to upload the app to.
https://itunesconnect.apple.com/docs/UsingApplicationLoader.pdf

Submission with Xcode 6 to iTunes Connect causes error ITMS-4088

I need to submit an iPhone app to the iTunes Connect account of my customer, by using Xcode 6.
With Xcode 5, during the submission process, we are requested to provide the iTunes Connect login credential to which submit the app.
It was just needed to ask the customer's team agent setting up an iTunes Connect user account for me.
This process was working fine.
Within Xcode 6 the app submission has been changed and it's not requested for iTunes Connect login. So it seems to be using the default iTunes Connect account corresponding with the Apple id configured in Xcode.
So trying to upload an app for the account of my customer I get the following error:
"ERROR ITMS-4088: "The organization XXXX does not have permission to modify the application with the Apple Id XXXXXXXXX. Please try again, using an account for an organization with access to this application." at SoftwareAssets"
Someone you already encountered this problem ? Do you have an idea how can I solve it?
Thanks
Edit (Some precision about my settings):
I'm working for several customers and so I configured my Apple accounts as follows:
I have only one Apple developer Account associated to an Apple Id: my.first#email.com
my developer account is associated to the developer account of some of my customers when I need to make changes with provisioning for instance. And so signing in to developer.apple.com I have to choose the right team I need to work for. It's relatively easy to do by this way.
For iTunes Connect I have my main account with the same Id as the Apple Id: my.first#email.com
When I need to submit an app for a customer it's not the same story as for the developer account. Indeed within iTunes Connect, it's needed to provide a new email each time you need to be added to the account of a customer. So I created several redirections of type my.second#email.com, my.third#email.com...
For submit an app for a customer with Xcode 5 simply choose the right iTunes Connect account when Xcode invite you to do that in the Organizer's submission process.
With Xcode 6 there is the error above.
The Problem with Xcode 6 is that this one does not request anymore to choose the iTunes Connect account to which the current app has to be uploaded.
Xcode seems now to expect uploading the current app to one of the accounts defined in the Preferences panel. However the Preferences’ account section waits for developer Apple Id and not for iTunes Connect account Id. When I added iTunes email to this section I got errors such as: not valid Apple Id or Apple Id not added to a developer account.
Perhaps a solution could be to add each iTunes Connect Id to the corresponding developer team (developer.apple.com) but it’s very constraining.
Another solution could be to have and Apple’s enterprise developer account instead of personal account, what would allow to add the iTunes Connect Id to your own developer account but I’m not sure this one could solve the issue because I get a personal developer account yet.
After few researches within Google and documentation, I deduced that either there is a bug within Xcode 6 or it’s now very difficult to use in this case, and I gived up to use it to submit this app.
Instead of Xcode I used the Apple’s Application Loader 2.9.1 which is very ease to use and make the submission faster.
It has been the final answer to my issue.
in your organizer Press in Export.
Save for ios appStore.
Generate Ipa.
Go to Application Loader (In Xcode-- Open developer Tools)
double Click in Deliver Your App
Select IPA.
good luck.
I had a similar issue:
For Team XYZ In iTunes Connect I was an Admin with AppleId A
In the Member Center (developer.apple.com) I was an Admin with AppleId B
Once AppleId A was added to the Member Center as an Admin I was able to successfully submit an app via XCode.
So it seems as though the AppleId for Member Center and iTunes Connect must match for each team.
Hope that helps someone,
Kevin

Uploading or just archiving an app for a client

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.
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:
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.
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.
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)
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.
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.
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...
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
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.
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.
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

Ways to deploy custom iPhone application? Outside the US

we run a small software company in Guatemala and we're having a bad time deciding/investigating how to deploy an app we were hired to develop.
The current options are, enrolling on the enterprise program, but does that means that we are as a third party cannot do that? How do we get the DUN for our client? (we would jump the app store validation)
Enroll to the traditional developer program and have our application sold via the B2B portal, but Guatemala is not listed as a country where our customer can enroll (and as a custom app we dont know if the approval process would approve our app)
Please any previous experience you can share is welcome.
You can go with below steps:
1) Create developer account on Apple. (You may ask to client to create it).
2) Request client to provide devices UDID number on which, they will test your app. (You can achieve this by going to iTunes, once device connected).
3) Create AppID, provisional profile with client UDID added.
4) Create AdHoc bundle and sent to client for testing the app.
5) Just check the AppStore from where your client can download app from app store. And simple upload the app on AppStore and check that country only.
Note:
To deploy app on App Store, you need developer account. You can not deploy app on App Store with Enterprice account.
Hope, you got an idea of whole process.
Let me know in case of any difficulty.
Cheers!
As stated above in comment. You need to have developer account, to create provisioning profile having device UDID attached.
In your case, you can request your client to create developer account or enterprise account for you or request his client to create developer or enterprise account.
You can also use TestFlight which is great tool for sharing enterprise applications for iOS.
Hope this info helps you.

Resources