Correct method for an app store submission - iphone

I am just about ready to submit my app to the store and would like to know any tips or best practices from fellow iphone developers who have submitted to the store before.
What needs to be done before submission?
How is the binary created or packaged?( what things should be kept in mind)
What is the idea behind scheduling a release date? (can it not just be released after it has been accepted)
What else needs to be done in order to submit?
Any bad experiences which developers could take note of?

First, have you gone through Apples docs on submission: http://developer.apple.com/iphone/appstore/submission.html
In general, the process is to log into itunesconnect.apple.com using your iPhone developer account, click "manage applications", then "Add new application" and fill in the forms.
You need to build a distribution version of your app codesigned with an iPhone Distribution cert. The Distribution cert can be obtained from the iPhone Developer Portal (http://developer.apple.com/iphone click "iPhone Provisioning Portal" on the right.) When you have a distribution build, you just need to zip up the app. Open the MyAppProject/build/Release-iphoneos directory in Finder, right-click on myApp.app and select "Compress 'myApp.app'" from the context menu. For very large apps, you will need the Application Loader available from the App Management section of iTunesConnect to upload the binary.
In general, it takes at least a week for an app to be processed by Apple. Typically, as soon as Apple accepts the app, it's available for sale. That said, if you don't tell anyone about the app, no one will find it.
For me, the hardest parts of the app submission process are writing the blurb and coming up with the list of keywords.

How is the binary created or packaged?
Goto
build/distribution-iphoneos/ inside that you have .app file compress it and that compressed file is to be uploaded.
upload should be done through APPLICATION LOADER.

These are the following steps needed to build an iPhone app under an Apple Distribution License and upload it to the App Store.
Create A CSR from Keychain Access in a Mac machine.
Access Keychain Access as Finder>>Applications>>Utilities>>Keychain Access.
Upload this CSR while creating a Distribution Certificate.
An Apple License can have only one Apple Distribution Certificate.
Download Distribution Certificate.
Open Keychain Access.
Access Keychain Access as Finder>>Applications>>Utilities>>Keychain Access.
Install the downloaded Distribution Certificate.
Right Click on the Distribution Certificate and select "Export Certificate" and save as Personal Interchange Certificate (.p12) format in destination Library>>Keychains.
For every new application we need to create new Provisioning Profiles under one Apple Distribution Certificate.
For each new Provisioning Profile, we need to create a new App Id.
So we need to create a Adhoc and Appstore Provisioning Profile.
Adhoc Provisioning Profile is for testing the app in apple devices.
*Appstore* Provisioining Profile is for uploading the app to appstore.
Download the respective Provisioning Profile and double click on the profile to install it.
Delete all the previous profiles and just retain the newly installed profile.
Build the application by selecting the Code Signing Entity as the newly installed Provisioning Profile.
6 Upload the ApplicationName.app.zip file as the binary file in Application loader while uploading the application to appstore.
Reference: https://developer.apple.com
I believe this would be of some help to you.

Related

Renewing an expiring Enterprise provisioning profiles, and other aggravations

Now that the app I created last year has enjoyed a year's worth of functional success, my Enterprise users are beginning to see alerts indicating that the provisioning profile is about to expire.
The Code Signing business of the app gave me tremendous difficulty in the beginning, and now it's doing it again. I think it's because all the information I can find about it refers to apps to be distributed in the App Store, but not for Enterprise apps. The "Tools Workflow Guide for IOS" seems only to be helpful for App Store distribution.
I did finally get it working just by trial and error, by setting all of the Code Signing Identities to "iPhone Developer," but I really need to understand the proper way to do it and why it works that way. And I need the "Idiot's Guide" version.
First, I think what is hanging me up is understanding the Distribution aspect. Is "Distribution" only in reference to an app that is bound for the App Store? This being an Enterprise app, does Distribution apply? Any time I try to create a Distribution profile and include it in Distribution/Release for the Code Signing Identity, compile fails. It works ok if all Code Signing Identities are set as "iPhone Developer." Does that mean it is going to always need a Developer provisioning profile, and never a Distribution profile?
The "iPhone Developer" profile always comes up in the Code Signing Identity section of Build Settings as "(currently matches 'iPhone Developer: Bill Norman(4GR2 etc) in 'iOS team". But any other profile doesn't say anything like that, and so none of the other profiles work. If they don't work, why are they there? And do I need to delete them?
And yes, there are lots of profiles listed that are the result of many trials and errors. Only one appears in the Profiles section of the iPhone's Settings, and that's the iOS Team Provisioning Profile.
If it does need a "Distribution" profile, how do I make it work?
Next question: Will my Enterprise users need to download and re-install the app to get the new provisioning profile? Or will it do it by itself, seamlessly? Or will it inform my users that the profile has expired, and they need to do such-and-such to get their app to work?
More: The Developer profile only lasts for a year, while the Distribution profile lasts three years. Obviously it would be helpful to make it last three years, but can we do that with an Enterprise app?
My apologies for my continued inability to fathom the inner workings of this stuff. And many thanks to anyone who can help.
First thing that you want to do is delete all of those extra provisioning profiles that you created through trial and error. Just totally remove them from the organizer. The difference between developer provisioning profiles and distribution provisioning profiles is that developer profiles will only work on devices that are registered with that developer profile, meaning test devices. You would not be able to sign an app with a developer profile and then put it on any device, only devices that you have registered to work with that profile. In the distribution zone you will have app store distribution and Ad Hoc distribution. App store refers to the Apple App Store which you must submit your app to apple for that. Ad Hoc distribution allows developers who have enterprise accounts to distribute to any device via the internet or other methods.
I would need more information when you say that compile fails with distribution but generally speaking, you would click the product tab and then click on archive. When the archiving is complete and the archive window pops up, you would click on the button that says Distribution in the bottom right corner. You would then click on the Save for Enterprise or Ad-Hoc deployment option. You choose your distribution code signing identity when asked which identity to use and hit next. Here comes the tricky part: On the next section where you are choosing where to save the app, you click on the option, save for Enterprise distribution. There are two fields that need to be filled in here, the first is an application url, this is the exact url where you will be hosting the ipa file, for example http://www.somewebsiteyouown.com/myApplication.ipa
The second is the ApplicationTitle which will just be your app title: myApplication.
This process will generate for you a plist and an ipa file, you put thos both on the server and link to the plist from a button or link on a webpage. The plist is like the instructions on where the ipa file is and what to do with it.

Release an ios application?

I've an iOS project developed by someone else, now I have to update it and build a release for client so that they test it.
I've updated it and while archive it in release mode, get error-
The identity 'iPhone Developer: XYZ' doesn't match any valid, non-expired certificate/private key pair in the default keychain
I am new to iOS. I have some idea that I have to change developer id or something similar in certificate. But do not know how. Can anyone help me to fix this issue?
Thanks.
You need to have Apple development certificate and .p12 file of that account of which that provisioning profile exists.
If you don't have, you need to create it from keychain, by requesting a certificate from authorised authority->generate csr and submit in you developer account.
hope it helps you........
You need to do an "Ad Hoc" distribution.
Build your App for "Release".
Go to the "Organizer" and select the Archive.
Select your build in the Archive.
Use the "Distribute" button and select the middle radio button. "Save for Enterprise or Ad Hoc Distribution".
That will produce a .ipa and ask you where you want to save it. You can put that on your desktop and distribute it.
In order to build an Ad Hoc Build, you have to get yourself an "Ad Hoc Distribution" certificate. You do that in the Apple iPhone Developer site in the provisioning portal area, located here:
iOS Provisioning Portal
You will also need to authorize the devices you want run test versions on in the same way you authorized your own devices for development.
If you have to run the App on many test devices and the testers are not technical. I suggest you take a look at a pretty good service online called "TestFlightApp".
You don't have a valid keychain item for the developer certificate, is what the error is telling you. It's a case of creating one and installing it.
But for delivering a test build - you need to create an adhoc distribution, using a distribution certificate that has the test device's udid included.
In either case - and for further troubleshooting - Apple have a handy Technical Note for dealing with these kinds of issues and how to solve them.
If you go to your project in Build Settings -> Code Signing -> Code Signing Identity, you can change the signing certificate to your own.

Give iPhone archive to distributor

I've developed an application for an extern distributor. Now, they want to publish the application.
I decided to create an xcarchive of the complete app with Xcode. But I have problems with the bundle identifier. Have I to choose an identifier and the distributor creates the provisiong profile and the certificate?
Would be great if you can tell me what I have to look for!
Your Distributor needs to have a "Company" Apple Developer Account.
They invite you to their organization as a "Member"
You accept their invitation.
the next time you login to developer.apple.come you will be presented with a Team droplist (your team and their team)
Select Their team.
Now, go to the iOS provisioning Portal->Certificates. Generate a Developer Certificate. they will have to approve this, so let them know the request is coming.
Once you have a Developer Certificate they will need to make\modify a Developer Provisioning Profile, with your certificate enabled in the Profile, for the AppID in question.
Once this Profile is created you download it.
Now you have their Full Bundle ID (the GUID and the "com.customer.app")
Now you change Code Sign Identity for Release to "iPhone Developer".
You Build and Archive the app using the Developer Provisioning Profile.
In the Organizer you will see the app you just built, right-click on the app and do a "show in finder".
Zip up the .XCARCHIVE file and send it to your Distributor.
They will unzip and double-click on the .XCARCHIVE file, this will import it into their XCode's Organizer.
From Organizer they can ReSign the app for "iPhone Distribution" using the same Bundle ID that was used to compile the app.
They can distribute it as they see fit.
I'll assume that you're using xCode 4 (or above ) for this.
You're going to want to open your scheme editor (The drop down menu next to the 'Run' and 'Stop' button contains this). Select the 'Archive' scheme and make sure that it's building a release (or distribution ) copy of your app and not a debug version.
The speculative part of the question, it's probably different for each distributor, I'm assuming your distributor is already set up as an iOS Developer (ie they can distribute on the app store already) I just set the bundle identifier to something appropriate com.nameOfDistributor.nameOfApp.
In xCode 4 you don't need to worry about any provisioning profiles etc, or certificates, just archive that up and send it to the distributor. Just send them a note of what the bundle ID was, and they should be able to do all the code signing in xCode themselves if they're using xCode 4 that is.
If the distributor is unhappy with that they usually just email us back and we sort it out. But just archive the release build of the app and send it to them letting them know what you used as a bundle id (also let them know the version number if you've been incrementing that as development has progressed).

IPhone App Provisioning Account For Multiple Developers

Ive only previously been developing the Apps for our company by myself and Provision management has been quite simple. We have now added another developer to the project and i am having trouble setting up the provisioning for both of us to deploy and test to out iphone.
Does anybody know if there is a step by step or any tips on how to set up provisioning for a multi developer scenario project?
Thanks
Probably you are having trouble sending the iphone developer certificate, if you want to share it, you have to share the private key of the certificate. Not only the public part which can be downloaded from the member center. For that, you have to get into the KeyChain, look for the developer certificate, expand it and right click over the key, then export the key and send it to the new developer.
Hope this helps
We use a team provisioning profile that was created and managed by xcode. If we get a new developer they just login to the dev portal in organiser and then they can deploy. Unfortunately I can't remember how I did it because it was like two small things and it just worked.
You will need to:
Export your Developer Cert from your
KeyChain and send it to your second
developer
Export your Distribution Cert from
your key chain and send it (if you want him to be able to submit to the app store or send out ad-hoc builds to beta testers)
Go to your Provisioning Portal and
add his device to your portal
Then go hit edit on all your
provisioning profiles, adding his
device to each of them
You will both need to download the
new versions of your provisioning
profiles
(Adding his device to the portal & downloading new profiles can be done through the xcode organiser, its usually faster that way)

Share my iPhone app for testing

I'm writing a new iPhone app and want to share it with a couple of friends for testing and general feedback and sign-off. Is there a way I can do that?
They are located in a different state, and they don't have a Mac either.
Edit: I wrote this post a long time ago. Since then, services such as TestFlight have come along which do this entire process. This is really the way to go!
You need to make an ad hoc build which your friends can install on their phones. It's a bit of a pain, but basically, the procedure goes like this:
Go to the Apple Developer Center's Provisioning Portal and register their device ID's. You will need to have your friends give you their device ID's, which can be done by clicking on the "Serial Number" field in iTunes on the device page.
Generate a distribution certificate for ad hoc distribution in the Provisioning Portal under Provisioning -> Distribution
Download that certificate yourself (the .mobileprovision file) and install it into Xcode by dragging it on the Xcode icon.
Duplicate your "Release" build setting in Xcode for an Ad Hoc build. Everything should be the same as Release, except in the "Code Signing" section you will want to select the new Ad Hoc profile generated in step 3.
Make an Ad Hoc build by going to Build -> Build and Archive
When Xcode brings up the organizer window, right click on the archived build and make a .ipa file by saving it to disk
Tell your friends to drag the mobile provisioning profile to the iTunes icon (or with File -> Open for windows users) to install it on their phone.
Tell your friends to drag the .ipa file you made into iTunes, and sync their phones
At this point, the app should be installed on their phone, but lots of things can go wrong, so you should definitely read Apple's documentation on the subject as well.
Note that this procedure won't work unless your friends are using iTunes to sync applications with their phones. Also, as noted, you will need to be a paying developer in ADC to even access any of the Provisioning Portal stuff.
You need to create an ad-hoc provisioning profile and build your app with that. Then send both a .zip compressed build and the profile to your friends (maybe over e-mail). They don't necessarily need Macs... Windows will do just fine, as long as they have the latest iTunes installed.
There's more information (including how-tos) at the iOS Provisioning Portal.
All this assumes you've paid your $99 and are a registered iOS developer.