Update new iOS Application version to App Store - ios

How to update my app in app-store to a newer version?
Earlier, I successfully offered my app into the app-store. That's the starting point. But it's been a while, I've updated my app, and would like to offer a new release. Since a misstep in preparing the app can take a bit of time, I'd like to have the specific steps required to offer an updated release on the Apple app store.

Summary
The process of releasing a new version of an iPhone app to the Apple app store requires quite a number of steps, but not all the steps will be required, depending on whether certificates are up to date, builds are targeting required versions, if you have screen shots for the required devices, etc. Below is an example of the steps you might need to execute to put a new version into the Apple app store.
Steps
1. Versioning and Signing
Within the XCode application, update the version of your application. Also check to see that there is a valid provisioning profile. In this example, the profile is expired, so additional steps will be required. If you have a valid profile, skip the (lengthy) step 2.
2. Updating Provisioning Profile
Skip this step if you have a valid profile.
This process does not use the Automatically manage signing feature of the XCode application. Automatic signing only works if you have a physical, registered Apple device, which I do not have. So automatic signing might be easier, but is not used here in this example.
2a. Add signing certification
Here we see there are no valid signing certificates, so one is created and associated with the apple ID.
2b. Manage certificates using `developer.apple.com`
By using the Apple developer web site, we see that an old provisioning profile is expired and we also see our new distribution cert is available. We create a new distribution profile for the app store and generate a new provisioning profile, then download it.
2c. Import the new Provisioning Profile into XCode
After the creation of the new Provisioning profile on the Apple developer web site, we import the new profile into XCode. If there is a problem with no signing certificate, you might need to select (project) -- > Build Settings and searh for PROVISIONING_PROFILE and tweak that. Or turn on, then off automatically manage signing.
3. Build and Upload the Application
Here we build the application using a generic device, archive, and upload using the provisioning profile from step 2, or an earlier valid provisioning profile.
We also must wait for the automated processing to complete. An email is generated and sent by Apple.
4. Prepare Application Submission
This is where we assign a `Store Version` number, assign the build file we uploaded in step 3, and reaffirm the application meta data.
The meta data includes screen shots of the application, and Apple requires that certain screen dimensions are represented. This answer will not explore the challenges associated with the case where Apple creates an additional burden on the developer by requiring different screen shot resolutions. Instead, an reference to another post will be included: Submit iOS build update without re-uploading screen-shots and app-previews
. My conclusion for screen shots is that you can often request (through Media Manager), that screen shots you've uploaded be used on various other devices, but when new hardware is released, you'll probably need to generate new screen shots manually.
Once the meta data is complete, the version can be submitted to Apple for approval. This process requires a real person, I think, and has taken at least over night, if not longer. This answer will not address the application-specific review process, but even though the new version didn't change anything significant, you may be asked to alter things in your submission or even within your app.

steps:
in your project in xcode go to Target -> general
there you see version and build,
if your last version in app store was 1.0, now if you have made minor changes in app, new version might be 1.1 0r 1.0.1 etc, and if major app changes, version changes accordingly, i hope you understand what i am saying here
and for build, add 1 to the last build number which you used to upload app in you developer account, not the one in app store.
Now clean app, change your provision profiles and certificates accordingly for app store..
now clean build the app, and then archive the app
after archive completed, a window appear and from there,
either you can export your ipa and browse to your ipa file, use application loader to upload app or
click upload button there in window itself.. and follow steps, this might take some time
depending upon your app size.. and after app upload success, 10-15
minute time takes, to show your this uploaded build in your
developer.apple.com console.
open the developer console, go to itunes connect -> my apps -> select this app uploaded from list of app available in list
since there is already aversion of your app in appstore.. click on add version, give the version number and select the build you uploaded earlier
and then fill in necessary details and submit for review.
i might have missed a few steps, but thats the general idea.. you will figure it out.

First you have to update version of your app choose target ---> Version Like from 1.0 to 1.1.
Choose device it's Generic ios device then clean and build the project.
Make sure you have a valid Production Certificate and provisioning Profile, installed in your mac.
Go to --> Product --> Archive --> it's open archive window --> then click validate button or it's check validation, if any error occur you have to resolve it.
then it ask for Certificate and provisioning Profile - Choose correct one.
if it success then Upload to app store.
If all work done successful then build show on app store after some time.You will get a email.
So for Submit a new build go to itunes connect by login your apple account and open your app then click (+) button version or plateform
give the version name that you provide for app version and create it.
then you can change info for this version like new Updates and screen shot if you want otherwise no need to change anything.
when build your ipa is connect to your account, In Build section of this version it show a (+) button. by clicking Then you can select your build and save changes and submit to app store.

Related

iOS: Bundle format unrecognized, invalid, or unsuitable

When I try to run an iOS app on real devices it give me the following error, but it works on simulator, also I uploaded test build on TestFlight successfully, I tried to use another bundle identifier but no luck.
The project is built using Swift and using CocoaPods to include Alamofire and other libraries.
Without having all the details it sounds like you need to update your Provisioning Profile for Distribution or Development.
You will first need to go to the Apple Developer portal and login in to your account. Then select "Certificates, Identifiers and Profiles", followed by "Devices". Add your iPhone's name and UDID to the list if it is not there already.
After your device is registered to your account you will need to update the Distribution Profile (to allow devices to open your app through the beta distribution channel of Test Flight) as well as your Development provision profile to allow team members to build and run the app through xcode on their device instead of the simulator.
First select Distribution and click on the preexisting Distribution Profile for your application. Select the edit option and make sure the check mark next to your device is selected. Then generate a new Distribution profile. This will cause a download to automatically occur in your browser window. Once its complete you should click the download and this will automatically add it to xcode.
Now create a new provisioning profile for your application. Add the appropriate App Bundle Id and select your device from the list. Generate the new profile and a download will again be triggered in the browser window. Once the download is complete again click the download which will automatically add the profile to xcode.
Your application should now be able to run on your device when building and running through xcode as well as when it is downloaded from your beta distribution channel.

How to build an iOS binary without setting an Apple Developer account and team?

I'm using Xcode 6.3.2, and I'd like to let another people to build and create the .ipa files of my projects, but I don't want neither to expose my Apple Developer account information, nor create users for them in my team... is that possible? Either by using Xcode, either by commands line.
Thanks in advance
EDIT: The goal is to prevent those external people from being able to submit apps to the App Store by means of my Apple Developer account and from being able to see the other apps managed in the account.
EDIT2: Does providing the distribution certificate to external people make possible to them to submit binaries to the App Store?
After reading your edits, I think I understand more clearly what you are trying to do. Basically, you will simply need to provide the other members of your team with the following:
The private key used to generate your app store distribution
certificate.
The distribution certificate
The app store distribution
provisioning profile
This will allow those team members to work on, and build the app for the app store. Without your Apple developer ID password, they will not be able to log into iTunes Connect to see the other apps you have. While they will be able to build the app for app store distribution, you (as the only one with the apple ID password) will have to be the one to submit the compiled app to the store.
So basically, your development team will create the apps. When you're ready for release, they can do an "Archive" in Xcode to create the .app that has been signed for the app store (using the provisioning profile and signing identity that you provided them in the three files I mention above. They will zip up the .app and the .dSym files into a .zip and send it to you. You will then log into iTunes Connect and set upt the app to be ready for the new binary, and then use the Application loader to upload the .zip to apple for review. Once you have gotten a successful review, you will again log into iTunes Connect to release the app. So at no point will the developers have access to submit apps or see other apps you have in the store.
Also, the development team will not need the provisioning profile, cert, and key until they need to build for the app store. During the development phase, there is no problem with them using their own developer accounts to build and test the app.
One additional thing to note is that Apple is changing the roles that are available in iTunes connect. You may want to review those new roles to see if some combination of those roles my work for your team setup.
From http://9to5mac.com/2015/06/12/wwdc-itunes-connect-testflight-limits-account-switching/
After several apps are added to an account by its admin, developers
can now assign user roles to individuals on their team— app manager,
developer, or marketer— with each allowing varying access to iTunes
Connect features. App managers, for example, will be able to create
users, assign user roles, change pricing, and submit apps for review.
Marketers will get access to updating store metadata, uploading promo
material, and requesting promo codes. Users assigned the developer
role will be able to upload binaries, and view crash logs and store
metadata.
Apple recently introduced Free-provisional-profile and/or free-developer-certificate support.
But it's limited (see below note).
To utilise that follow below steps suggested by Apple,
In Xcode, add your Apple ID to Accounts preferences, described in Adding Your Apple ID Account in Xcode.
In the project navigator, select the project and your target to
display the project editor.
Click General and choose your name fromthe Team pop-up menu.
Connect the device to your Mac and choose your device from the Scheme toolbar menu.
Below the Team pop-up menu, click Fix Issue.
Xcode creates a free provisioning profile for you and the warning text under the Team pop-up menu disappears.
Click the Run button.
Note that said support is limited, for example, the capability to sell things with "Apple Pay" would not even build with a free-certificate.
Yes, there are several ways to solve your problem.
You can create .ipa file with you provisioning profile and give them the file, they can you use application called "Application Loader", they can use this application to upload the .ipa, this should resign your application with their provisioning profile. I did not try this but it should work.
When you create an archive of you application, it will be listed in "Organizer", go to that location, and give them that .app file alone. Then they can use any third party application(can be downloaded from Mac Appstore) to resign the application with their profile. In this case, you are completely hiding your information. They can even change the application icon, default image.. etc during the resigning process.
When you build your application in release mode an .app file is created, this is unsigned binary. You can search for .app file in your Xcode project itself. Just find the location, and give them that .app file alone. Then they can use any third party application(can be downloaded from Mac Appstore) to resign the application with their profile. In this case, you are completely hiding your information. They can even change the application icon, default image.. etc during the resigning process.
Hope this helps.
No, There is no way to compile a .ipa without a provisioning profile (device compile, not simulator compile). To do this, you would go XCode->{AppTarget}->Build Settings->Code Signing->Code Signing Identity, and set 'Don't code sign".
Trying to compile afterwards will fail with
CodeSign error: Code signing is required for product type
'Application' in SDK...
EDIT: The goal is to prevent those external people from being able to
submit apps to the App Store by means of my Apple Developer account
and from being able to see the other apps managed in the account.
You have two options:
Send them your Source code + XCode Project, and not the library.
Compile the code using "iOS Developer" Code Signing identity, and not "iOS Distribution" identity.
Anything signed with iOS Developer can never be sent to the AppStore.
Anything signed with iOS Distribution can never be run on a device
unless it is downloaded from the AppStore.
They can never see what you have for sale, nor publish anything unless they have your AppleID username and password

Adding a new provisioning profile to an existing TestFlight build

So I've been using TestFlight with an app that's in development. And up until now, the Beta users haven't been changing that quickly, so it's been pretty easy to just add a new device to the provisioning file and post a new build whenever needed. But, we've recently started to quickly expand the pool of Beta users and posting a new build to TestFlight every time we want to add a new user doesn't seem like the ideal solution any longer. So I know they have the feature which lets you upload a new profile with a new device(s) in the new profile, which I'm trying to use. So at that point I then have the new user attempt to install the app and the TestFlight WebClip asks the user to install the new profile (since it's no longer embedded in the app like with the initial build/provisioning file). The user successfully installs the new profile but when going back to the TestFlight app/webclip, just repeatedly gets asked to install the profile again without being able to actually install the app.
OK, a complete walk through of the details:
I build an app with the testUsers1.mobileprovision file and upload it
to TestFlight.
At some point later I add UserX to a new mobile provisioning file,
testUsers2.mobileprovision.
Under the permissions section of the old build, I use "Update
profile" to load testUsers2 up to TestFlight.
UserX then starts up the TestFlight webclip/app on their device.
Rather than installing/downloading the app, TestFlight asks them to
install the new testUsers2 provisioning file and the user does
install the file.
UserX then restarts TestFlight on the device and it again asks them
to install the new profile instead of actually installing/downloading
the app.
I've written to TestFlight asking for any ideas of what could be going wrong with this, but haven't received an answer yet. Anyone see what I'm doing wrong here? Or am I hitting a bug of some sort in the TestFlight Webclip on the device?
Update:
I've traded a couple of emails with TestFlight and they've replied with "While we troubleshoot this issue, the best thing we can recommend is to re-upload the same build with the new provisioning profile associated with it. It will not create a new version, but will update the most current version in TestFlight."
So, hopefully they'll have an answer shortly.
Thanks,
Will
This is not possible anymore since the launch of iOS 8, check their support page Adding more testers to a build?:
Due to the changes in iOS 8, it's no longer possible for testers to install provisioning profiles from the iOS Settings app. App developers will now need to rebuild their Ad Hoc beta apps to update the embedded provisioning profile in the app's IPA file.
You will need to add a new build with the updated provisioning profile.
You don't need to create a new build each time the provisioning profile changes - all you have to do is download the updated provisioning profile from the the Provising Portal, then go to the selected build's page on TestFlight, click "Permissions", then click "Update Profile" and select the new provisioning profile file.
The problem you described is probably not related to the build's provisioning profie, but the WebClip itself - try deleting it in Settings -> General -> Profiles -> TestFlight WebClip, and install it again.

Steps to upload an iPhone application to the AppStore

I want to know the basic steps for uploading my iPhone application to AppStore.
How do I make a provisioning profile using a certificate and what other settings do I need to do to upload an application?
I have just made an application on my iMac using Xcode and the iPhone SDK V2.2.1. What do I need to do for uploading it on the Apple iTunes store?
I am member of that and I have also a distribution certificate.
This arstechnica article describes the basic steps:
Start by visiting the program portal
and make sure that your developer
certificate is up to date. It expires
every six months and, if you haven't
requested that a new one be issued,
you cannot submit software to App
Store. For most people experiencing
the "pink upload of doom," though,
their certificates are already valid.
What next?
Open your Xcode project and check that
you've set the active SDK to one of
the device choices, like Device - 2.2.
Accidentally leaving the build
settings to Simulator can be a big
reason for the pink rejection. And
that happens more often than many
developers would care to admit.
Next, make sure that you've chosen a
build configuration that uses your
distribution (not your developer)
certificate. Check this by
double-clicking on your target in the
Groups & Files column on the left of
the project window. The Target Info
window will open. Click the Build tab
and review your Code Signing Identity.
It should be iPhone Distribution:
followed by your name or company name.
You may also want to confirm your
application identifier in the
Properties tab. Most likely, you'll
have set the identifier properly when
debugging with your developer
certificate, but it never hurts to
check.
The top-left of your project window
also confirms your settings and
configuration. It should read
something like "Device - 2.2 |
Distribution". This shows you the
active SDK and configuration.
If your settings are correct but you
still aren't getting that upload
finished properly, clean your builds.
Choose Build > Clean (Command-Shift-K)
and click Clean. Alternatively, you
can manually trash the build folder in
your Project from Finder. Once you've
cleaned, build again fresh.
If this does not produce an app that
when zipped properly loads to iTunes
Connect, quit and relaunch Xcode. I'm
not kidding. This one simple trick
solves more signing problems and "pink
rejections of doom" than any other
solution already mentioned.
Apple provides detailed, illustrated instructions covering every step of the process. Log in to the iPhone developer site and click the "program portal" link. In the program portal you'll find a link to the program portal user's guide, which is a really good reference and guide on this topic.
Check that your singing identity IN YOUR TARGET properties is correct. This one over-rides what you have in your project properties.
Also: I dunno if this is true - but I wasn't getting emails detailing my binary rejections when I did the "ready for binary upload" from a PC - but I DID get an email when I did this on the MAC
Xcode 9
If this is your first time to submit an app, I recommend going ahead and reading through the full Apple iTunes Connect documentation or reading one of the following tutorials:
How to Submit an iOS App to the App Store
How to Submit An App to Apple: From No Account to App Store
However, those materials are cumbersome when you just want a quick reminder of the steps. My answer to that is below:
Step 1: Create a new app in iTunes Connect
Sign in to iTunes Connect and go to My Apps. Then click the "+" button and choose New App.
Then fill out the basic information for a new app. The app bundle id needs to be the same as the one you are using in your Xcode project. There is probably a better was to name the SKU, but I've never needed it and I just use the bundle id.
Click Create and then go on to Step 2.
Step 2: Archive your app in Xcode
Choose the Generic iOS Device from the active scheme menu.
Then go to Product > Archive.
You may have to wait a little while for Xcode to finish archiving your project. After that you will be shown a dialog with your archived project. You can select Upload to the App Store... and follow the prompts.
I sometimes have to repeat this step a few times because I forgot to include something. Besides the upload wait, it isn't a big deal. Just keep doing it until you don't get any more errors.
Step 3: Finish filling out the iTunes Connect info
Back in iTunes Connect you will need to complete all the required information and resources.
Just go through all the menu options and make sure that you have everything entered that needs to be.
Step 4: Submit
In iTunes Connect, under your app's Prepare for Submission section, click Submit for Review. That's it. Give it about a week to be accepted (or rejected), but it might be faster.

How do you beta test an iphone app?

How can you beta test an iPhone app? I can get it on my own device, and anyone that gives me a device, I can run it on theirs, but is there a way to do a limited release via the app store for beta testing?
Related: Also, see this question on getting your app onto phones without using the App Store.
Creating ad-hoc distribution profiles
The instructions that Apple provides are here, but here is how I created a general provisioning profile that will work with multiple apps, and added a beta tester.
My setup:
Xcode 3.2.1
iPhone SDK 3.1.3
Before you get started, make sure that..
You can run the app on your own iPhone through Xcode.
Step A: Add devices to the Provisioning Portal
Send an email to each beta tester with the following message:
To get my app on onto your iPhone I need some information about your phone. Guess what, there is an app for that!
Click on the below link and install and then run the app.
http://itunes.apple.com/app/ad-hoc-helper/id285691333?mt=8
This app will create an email. Please send it to me.
Collect all the UDIDs from your testers.
Go to the Provisioning Portal.
Go to the section Devices.
Click on the button Add Devices and add the devices previously collected.
Step B: Create a new provisioning profile
Start the Mac OS utility program Keychain Access.
In its main menu, select Keychain Access / Certificate Assistant / Request a Certificate From a Certificate Authority...
The dialog that pops up should aready have your email and name it it.
Select the radio button Saved to disk and Continue.
Save the file to disk.
Go back to the Provisioning Portal.
Go to the section Certificates.
Go to the tab Distribution.
Click the button Request Certificate.
Upload the file you created with Keychain Access: CertificateSigningRequest.certSigningRequest.
Click the button Aprove.
Refresh your browser until the status reads Issued.
Click the Download button and save the file distribution_identify.cer.
Doubleclick the file to add it to the Keychain.
Backup the certificate by selecting its private key and the File / Export Items....
Go back to the Provisioning Portal again.
Go to the section Provisioning.
Go to the tab Distribution.
Click the button New Profile.
Select the radio button Ad hoc.
Enter a profile name, I named mine Evertsson Common Ad Hoc.
Select the app id. I have a common app id to use for multiple apps: Evertsson Common.
Select the devices, in my case my own and my tester's.
Submit.
Refresh the browser until the status field reads Active.
Click the button Download and save the file to disk.
Doubleclick the file to add it to Xcode.
Step C: Build the app for distribution
Open your project in Xcode.
Open the Project Info pane: In Groups & Files select the topmost item and press Cmd+I.
Go to the tab Configuration.
Select the configuration Release.
Click the button Duplicate and name it Distribution.
Close the Project Info pane.
Open the Target Info pane: In Groups & Files expand Targets, select your target and press Cmd+I.
Go to the tab Build.
Select the Configuration named Distribution.
Find the section Code Signing.
Set the value of Code Signing Identity / Any iPhone OS Device to iPhone Distribution.
Close the Target Info pane.
In the main window select the Active Configuration to Distribution.
Create a new file from the file template Code Signing / Entitlements.
Name it Entitlements.plist.
In this file, uncheck the checkbox get-task-allow.
Bring up the Target Info pane, and find the section Code Signing again.
After Code Signing Entitlements enter the file name Entitlements.plist.
Save, clean, and build the project.
In Groups & Files find the folder MyApp / Products and expand it.
Right click the app and select Reveal in Finder.
Zip the .app file and the .mobileprovision file and send the archive to your tester.
Here is my app. To install it onto your phone:
Unzip the archive file.
Open iTunes.
Drag both files into iTunes and drop them on the Library group.
Sync your phone to install the app.
Done! Phew. This worked for me. So far I've only added one tester.
In year 2011, there's a new service out called "Test Flight", and it addresses this issue directly.
Apple has since bought TestFlight in 2014 and has integrated it into iTunes Connect and App Store Connect.
Note that there is a distinction between traditional "beta testing" which is done by professional QA engineers, and "public beta testing" which is releasing your product to the public before it's ready : )
You can do "beta testing" -- loading to specific iPhones/iPods your testers will be using. You can't do "public beta testing" -- pre-releasing to the public.
In 2014 along with iOS 8 and XCode 6 apple introduced Beta Testing of iOS App using iTunes Connect.
You can upload your build to iTunes connect and invite testers using their mail id's. You can invite up to 2000 external testers using just their email address. And they can install the beta app through TestFlight
Diawi Alternatives
Since diawi.com have added some limitations for free accounds.
Next best available and easy to use alternative is
Microsoft
https://appcenter.ms
Google
https://firebase.google.com/docs/app-distribution/ios/distribute-console
Others
https://hockeyapp.net/
http://buildtry.com
Happy build sharing!
There's a relatively new service called HockeyApp, which seems to rival TestFlight, however they claim to give you access to unlimited users, but it does cost some $$ unlike TestFlight which has now been integrated directly into iTunes Connect.
Using testflight :
1) create the ipa file by development certificate
2) upload the ipa file on testflight
3) Now, to identify the device to be tested on , add the device id on apple account and refresh your development certificate. Download the updated certificate and upload it on testflight website. Check the device id you are getting.
4) Now email the ipa file to the testers.
5) While downloading the ipa file, if the testers are not getting any warnings, this means the device token + provisioning profile has been verified. So, the testers can now download the ipa file on device and do the testing job...
With iOS 8, Xcode 6, iTunes Connect and TestFlight you don't need UDIDs and Ad Hocs anymore. You will just need an Apple ID from your beta tester. Right now you can only beta test your app with 25 internal testers, but soon 1000 external testers will be available too. This blog post shows you how to setup a beta test with internal testers.
(As the official guide is still missing in this thread..)
TestFlight, acquired by Apple and now (iOS8+) available for beta testing makes it easy to hand your app to beta testers without the need to collect device UUIDs beforehand (you only need email addresses of your testers). An extensive guide explaining all necessary steps may be found in the iTunes Connect Developer Guide.

Resources