Uploading or just archiving an app for a client - ios

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

Related

How do I manage Signing Certificates when working under another persons developer account

So I have a client who I’ve built this app for. The app had reached its MVP so we launched it and transferred the app to their developer account. Now I want to continue working on the app for them but I don’t have the proper certificate on my device to make changes to the project on the clients developer account. How do I go about getting the proper certificates set up so I can upload new app versions of the app to their App Store Connect account?
There is two solutions I can think of :
They can add your Apple developer account into their new developer account and give you the developer access (or admin access to have a bigger freedom). Therefore you will be able to recreate certificates for you in order to work on your project. (for me this is the best approach and it keep things clean). To do so, just ask one of the admin of the itunesconnect account on your client side, and he will add you as a Developer Manager in the account.
you can ask them to export their new certificates as a .p12 file (which contain the private and public keys) and their provisioning profile from their Mac OS key chain (the developer or team from your client that is handling the app nowadays if any). Then you will have no issue at all. (I do not recommend this one and vouch for the first one even if second one seems easy). Also if tomorrow they changed it or revoke it will require to do again the same update..

How can i transfer an already published app to a different company yet remain developer of it

My Company A has built an app and published it on the store under our account.
After some time Company B contracted us to develop a branded version of our app for them.
We did that and published it on our store account.
Now Company B would like the app to be published under their app account. Because it is only a branded version we do not want to "transfer ownership" of the app, only publishing rights, as we want to remain the developer and will have to maintain the app etc.
The Apple guideline sounds like you have to completely transfer everything to Company B.
I am VERY confused about all that.
How would it work ? Company B gives me a publishing certificate and XCode knows where to upload it to ? I click "submit app" in XCode and Company B receives it in iTunes connect but has no real access to the app other than the uploaded package ?! How would they install it for screenshots etc ?!
But to stick to SO rules, the QUESTION here is: How do i only transfer the publishing stuff to Company B but keep the code and everything else in house.
In order to transfer the app ownership to company B, you can follow this guide by Apple. (thanks to #Madhav comments)
But what happen if you must continue working on this app ?
First, you have to use a production certificate from company B (you can still use your debug ones). Since the number of production certificate for a account is limited, company B has two choices :
If you are the only one external developer to work with company B, you can reserve one of these production certificate. Generate the .certSigningRequest file as if you wanted to create a certificate, send it to company B and ask them to generate the App Store and Ad Hoc certificate. With the .cer file they will send you and the private key you have generated, you can now work with this production certificate.
If the company B is working with multiple external developers, they should have kept one of their production certificate slot for external developers. They have to provide you both the .cer file and the private key.
They must also provide you a provisioning profile for the App you're working on.
You're now able to build App with their account. If they want to generate screenshots for the app by themselves, you can use TestFlight beta testing.
#NikkyD
Please use following link for Apple guide lines it will help you for transfer the app.
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/TransferringAndDeletingApps.html

Publish iOS app to App Store on behalf of client

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.

Writing iOS app for customer, customer submitting it?

I'm currently in the situation of writing an iOS application for a client.
The client wants to submit the app (.ipa package) to the app store himself, with his developer profile. Mainly because he want to have his name in the App Store rather than mine.
Could this procedure cause issues? For example signing issues?
Thanks in advance.
The application has to be signed with the certificates for the account under which it will be submitted. Your options include handing over the entire project and source code when the project is complete, or, develop the project as a developer of their account with their development and distribution certificates.
There is another option : you could ask the login and password of your client. So you'll create a distribution profile for your Mac, and all the other components for your application. When app is delivered on Itune Connect, your client may change its password.
That way, you can handle everything for him, and that could be usefull if he's not very able with techno stuff, but still want to have an app with his name.

iPad enterprise distribution options

We have an iPad app that we would like to distribute internally. We're looking into "Enterprise Distribution". The set of requirements I have been given include that the method for distribution is to be that a user goes to a secure website from an iPad, logs in, and downloads the app. The app then works for them.
Users who do not have access to the website should not have access to the application. We can easily prevent them from downloading the app by forcing them to log in. However, it is not obvious to me that after they download the app (via an .ipa file?), that they couldn't just give it to someone else, something that is not allowed.
It looks like a way around this is to have Distribution Provision Profiles, which determine whether a given app will run on the device. However, it's not obvious to me that those couldn't just be copied as well.
http://manuals.info.apple.com/en_US/Enterprise_Deployment_Guide.pdf
Once you create the enterprise distribution provisioning profile, download the
.mobileprovision file, and then securely distribute it and your application.
Sadly, I don't know enough to know exactly what I should be asking, but here goes:
Can ipa files just be copied from one Ipad to another, allowing anyone to use any given app? (assuming there is no other protection on the app)
If the answer to 1 is yes, is there any reason to believe that .mobileprovision files will help me?
Every device has a UDID, a unique identifier. This is how Apple enforces the 100 development devices rule for individual developers. You collect UDIDs as part of the download process, issuing the provisioning profiles to registered users.
To answer your questions:
Yes, theoretically, without DRM or provisioning, an ipa can be synced to iTunes (or manually copied with third party tools) and then moved to another dewvice.
Yes, .mobileprovision files include UDIDs in them which are pretty much unique to a given device. (The exception may be on jailbroken devices, which, if I recall correctly, can spoof a UDID.)
EDIT:
Just to clarify, in response to your requirements:
The set of requirements I have been given include that the method for distribution is to be that a user goes to a secure website from an iPad, logs in, and downloads the app. The app then works for them.
I would add a middle step.
User logs in.
User submits device info
You create a provision for the device
The user then downloads the app and the provision.
This does not stop the user from giving out the app to others, but it's the best you've got. You can also require the user to log in inside the app, with the same email as the one used to register the UDID, theoretically.
It's now July 2012. Apple's documentation on how to create and distribute an Ad-Hoc iOS application remains stuck at iOS 3, is over-complicated, overwhelming, and often wrong.
With an Developer Enterprise Program license (and a fair bit of patience), you can create an .ipa file, which you can stick on your website.
Your users can then navigate to this webpage on their iPad's Safari, click on a download link to download and install your app onto their device. No iTunes required.
Your app will need (amongst other things) to be signed with a distribution certificate, which you create on the Apple Developer website, but my point is that once you have jumped through all of these badly documented hoops, you can just stick an .ipa and .plist file on a webpage, and ANY user can install your app with it.
Even your Aunt Gladis, who lives 200 miles away and doesn't work for your company.
Mind you, if Apple finds out that you have distributed your app to anyone who doesn't work in your company, they will pull your license.
Getting the Enterprise Account takes a lot of work. Apple will want your DUNS and possibly other proof that you're who you say you are (and that you're an enterprise).
Going the other route (individual developer) will allow you to post your app (make it free so your users will not have to pay!) in the store. Your app can require an account on your local service that no one outside your company will be able to acquire, which will prevent people outside the company from using it. The risk here is that Apple will reject your app for this reason.

Resources