Writing iOS app for customer, customer submitting it? - ios

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.

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

Authentication failed for iOS app-specific password, but what do I do with my app-specific password? Where does it go?

Got a new SSD for my mac (so it is like starting over), and am trying to set it up for Xamarin iOS development (again). After much fun with Apple procedures I am ready to upload to the App store, but get this message:
This message pops up when I am after the Archive is built, after I select Upload (after Sign and Distribute). It seems the important part is Authentication failed Sign in with the app-specific password you generated.
Sign in? Sign in to what? I have my app specific password, but what do I do with it?
There certainly seems to be a lot of web pages trying to push me to appcenter.ms, but I should not be forced to use a Microsoft service to distribute my app and do not wish to go that route at this time.
Below are some hints to help others who like me are not full time iOS app developers and are tired of massive web pages explaining the process.
Important things to know/remember for Xamarin/iOS development (obviously you need a Apple developer account, need to install XCode, VS, Xamarin):
you need to tell XCode your Apple developer credentials
you need to tell VS your Apple developer credentials
you need to tell Apple the UID of your build box, test devices
you need a developer certificate and distribution certificate from Apple
you need to create two provisioning profiles, one for development and one for distribution
somehow building a Xamarin iOS demonstration project in VS on my Mac made the iOS simulators available to other projects
you may need a special Apple intermediate certificate (AppleWWDRCAG3.cer) and install it, even though various webpages said that was only necessary if your XCode was an old version (I had the latest XCode and still had to find/install it)

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.

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