I have a 2.0 version of an iPhone app that I want to submit an update for. The first version was built by someone else on their computer. I started from scratch and built a 2.0 version and am ready to submit it as an update. I have access to their iOS provisioning profile and everything but not sure exactly what provisioning stuff I need to download. And do I have to use their old App ID and Bundle ID etC?
If you want to update an existing app in the iOS App store, it needs to have the exact same bundle ID, a higher version number, and be submitted by the same enrolled iOS Developer account to iTunes Connect. You can (revoke if necessary and) create a new Distribution certificate and profiles in the iOS Developer Portal, if you don't have the old ones (and their associated private key), and use those for building the update. The provisioning profile you use needs to be suitable for the app's bundle ID (either a matching or wildcard App ID).
Related
An app can be installed in a device if it is code signed. While installing the code-signed app in a device the app id, certificate and device id is matched against the corresponding details embedded in the provisioning profile installed in the device. If it is matched then app is installed successfully.
My question is that:
During distribution we will not know and we will not mention the user's device id in distribution profile. Then, how verification is done during installation of distributed app?
When any application is under development stage, we need to add device ID in development profile. In case of distribution, there is nothing like adding device. Anyone having iOS device, can download your application from App Store. there is nothing like verification in i. You just need to enter deployment target for your application. So, if you have kept it 5.0, then anyone having iOS 5.0 and later, can install your application.
Let me know if still you have any doubts.
Is it possible to implement "Update Available and Install" mechanism for app which is not submitted to App Store.
Thanks.
You should take a look at iVersion which leverages the application bundle identifier to check if a new version of an application has been uploaded to iTunes (using the publicly available iTunes feed).
Because of the bundle id trick you should be just fine, meaning you can safely embed it in the first version you release to the App Store.
As for the non-App Store releases the iVersion provides a simple mechanism of checking for a new version from a plist at given URL. Moreover for beta ad-hoc builds you should take a look at TestFlight which aims at helping people with distribution of their apps outside the AppStore (however for beta builds only).
Say you have an existing provisioning profile with some devices and you archive a target with that provisioning profile. Then, you go into Member Center and add some more devices to the profile. Do you have to re-download/re-archive the project in order for those devices to install the target app?
No, as long as the name of the profile is the same, you can now distribute apps that include it to the new devices, as long as the new devices get the provisioning profile that includes their device ID.
Edit: A note of further explanation. Your archived app does not store the provisioning profile in its archive. You merely tell it what provisioning profile to look for in order to determine if it can run on a certain device. Therefore you can change your provisioning profiles all you want, and as long as it is the same profile the app is told to look for, you never have to recompile the app to recognize new devices.
Yes, if not - how can the previous profile know that you have added more devices to it ?
You have to delete the old profile in organizer and then you need to download freshly the same profile which is configured with new devices.
Note: don't forget to check the code signing in your project settings after installing the new profile.
(OR)
If you have already configured your iOS Developer Network profile in your system,
Just press the refresh button at the bottom right of your organizer
Yes the new profile will have to be built into your app for it to work with the devices added.
You have to download again the profile (or let XCode do the work for you).
You do not have to re-archive. Just share existing archive BUT sign-again with the new/updated profile.
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).
I was trying to implement in-app purchase. I am using ios 5.0 beta and xcode 4.2. Now I am remaining with only error. Also when I add my binary to iTunes Connect through Application Loader I get this error:
Please help me with it!
At the moment it is not possible to submit binaries that were created with Xcode4.2 and link against iOS5. This restriction will be lifter when iOS5 and Xcode4.2 come out of beta. At the moment you will need to use Xcode 4.1 to submit a binary to Apple (which won't work if you need iOS5 features or ARC).
Is it necessary to make a build of project through app store distribution provisioning profile?
When you want to test you iPhone App with In-App Purchase you will need a development provisioning profile setup with your app's id.
To do this:
Go to iOS Provisioning Portal ( http://developer.apple.com/ios/manage/overview/index.action )
Create a new App ID e.g. com.test.my_app
Go to Provisioning and Create a new iOS Development Provisioning Profile with the App ID from before
Go to XCode set your app up with the correct App ID and new Provisioning Profile you just made.
Edit
I just re-read your question, and it's probably my fault for not paying more attention the first time, but you can probably ignore my previous answer..
What I believe is the problem is that you're using the 5.0 beta SDK to write and submit your app. This can't be done. Apple will not accept apps written with beta software.
You must compile and submit your app with the 4.3 SDK.
A lot of those errors can't be made any more clear than they already are...
Firstly, your app needs an armv6 binary, so make sure you're not building only the current active architecture.
You need to provide an icon that is 57 x 57 in size and specify it in the info plist with the CFBundleIconFile key.
Your code signing is invalid. Ensure you are using the correct distribution certificate and that you have a valid provisioning profile.