iOS 7 And iOS 6 Different Versions Of The Same App - iphone

I have an iphone app that was accepted in the App Store before the arrival of iOS 7. The app used to support both iOS 5 and iOS 6.
Now i have updated the same app to iOS 7 and about to submit it to the App Store for approval. I have a question that is making me confuse.
Question 1: Is there any way the first version of the app stays in the App Store for iOS 5 and iOS 6 users while the new version that i am going to submit only serves the iOS 7 users. In other words, i want to save some time but not updating the same app compatible with the old versions.

A user that has an iOS version prior to 7.0 and have previously downloaded you app, can still restore the old version from iCloud.
New users of your app can not download an old version.
This is the information Apple sent out regarding this:
"Users who have already purchased your app are now able to download previous versions, allowing them to use your app with older devices that may no longer be supported by the current version.
If you do not want previous versions of your app to be available, for example due to a usability or legal issue, you can manage their availability in the Rights and Pricing section of the Manage Your Apps module on iTunes Connect."

Yes, since a few weeks. If a customer downloads your app and it is not available for his device (e.g. the app is iOS 7 only and the customer has iOS 6) and there is a < iOS 7 supporting version uploaded earlier, it will download that one.
Source: Engadget

First off I am going to ask why?
Secondly the two answers already given are completely wrong.
Too yoeribovens answer this isn't true, Apple haven't confirmed this and it isn't documented anywhere in the Apple documentation. The best reply I have for that article is it is complete rubbish. Unless Apple have confirmed it, it isn't true.
To user1673099s answer this is also not a good why to go. This means two apps to maintain on the app store, so unless one is a LITE version and the other is a FULL version I just wouldn't go this way at all.
The one thing I am going to do which is the actual way you should be working if you want to support iOS 5, iOS 6 and iOS 7 is direct you to the Official Apple Documentation for Supporting iOS 6.
This guide will help you make the transition from iOS 6 to iOS 7 and it will also instructed you on how to completely support previous iOS versions.
You might also want to read iOS 7 UI Transition Guide Before You Start and iOS 7 UI Transition Guide Scoping Your Project

I ask same question on Apple Support Communities. It is possible. They replied this-
iOS 7 and OS X Mavericks include new features that many of your favorite apps take advantage of when you update them. Some of these features are specific to the latest versions of iOS and OS X. As a result, the latest versions of some apps may not work with your device or computer if you are still using an earlier version of iOS or OS X. Thanks to the App Store, you may still be able to re-download a compatible, earlier version of an app when you are using an older operating system.
Here's how you install an earlier version of an app:
Open the App Store (with iOS 4.3.3 or later) or Mac App Store (with OS X Mountain Lion).
Go to the Purchased screen (iOS) or Purchases tab (OS X).
Select the app you want to download.
If a compatible version of the app is available for your version of iOS or OS X, simply confirm that you want to download it. For example, after purchasing iPhoto for your iOS 7 device, you can install an earlier compatible version of iPhoto from your iOS 6 device.
Additional Information
Note: Some earlier versions of apps may not be downloadable from the App Store if the app's developer has chosen not to make them available. If you don't see the version of the app you are looking for, contact the app developer for more information. The developer's contact information can be found on the app's product page on the App Store.
You can also read it from here-
http://support.apple.com/kb/ht5919

You have to use the different BundleId for Ios 7 app & changed it deployment target to ios 7.0.
So, idea is that you are making two different apps.
ios<7.0
ios=7.0
May this helpful to you.

Related

Is it still possible to submit apps targeted for iOS5 or iOS6 to the App Store after the release of iOS7

Like the question says, will I be able to submit iOS5/iOS6 apps to the App Store given that iOS7 is rolled out now? Or do I have to target iOS7 for my builds?
I understand that there is a great amount of UI changes, new features, not looking good, etc involved but I just want to know if it is still possible to submit old targets
Cheers
Yes it is still possible to submit apps targeted at older versions, as long as they perform on iOS 7 as well.
There is also now an option for people using legacy versions of iOS to download app versions that are targeted for that version.
Nice article about that here: http://thenextweb.com/apple/2013/09/17/apple-begins-allowing-users-running-legacy-ios-builds-to-download-older-versions-of-apps/
Your app is built to a specific SDK version, which is different from the deployment target. Apple typically require you to submit apps that have been built to the latest public SDK version, although I believe right now you can still submit apps built to iOS 6.
So you can target iOS 5/6 as you require - however, going forward your app will have to be built with the iOS 7 SDK.

iOS: Changing min SDK Version of App in Apple's Store

I have released an App in the App Store with target platform 5.1. The app also was developed using SDK 5.1. My customer phoned me and said this is crap because als the jailbroken phones aren't able to download the app yet - because there is currently no jailbroken version for 5.1.
What do I have to do? I'm coming from Android - therefore I want to be really sure what I am doing when applying an App update to ensure that it is also available for 5.0 users.
I also use a Library Project - which also uses SDK 5.1 as shown in the screenshot below.
I would be really glad about some instructions how to reduce the required version for the app and if there are some compatibility troubles/problems occurring to my code when I do this.
You should change the deployment target, in the summary tab of the target, as shown in the image:
And call your customer and tell him there is already Jailbreak for 5.1 ;)
Release App version 1.1 with deployment Target OS as 5.0 or what ever else version you want to include ...
Just found this now while researching another question, so I'm sure this has already been handled, but here's my $0.02, eight years later....
You provided a working app to the App Store. All apps on the App Store are guaranteed to work on compatible iPhones that have not been jailbroken.
If your user is doing non-sanctioned things with his iPhone, it's not really your concern. There were plenty of big-name apps which had the same problem as yours: people couldn't use the latest version because a jailbreak wasn't yet available. They had to wait until such a jailbreak was out. That's the risk you take with using a jailbreak.
The difference here is that if FaceBook or WhatsApp or whatever big-name app changed its target SDK to an iOS version that did not yet have a jailbreak, users couldn't call Zuckerberg on the phone to complain or threaten. You, as an independent developer, got the phone call.
It's a balancing act. You want to use the latest, greatest features of the iOS version, but existing users might not have the latest, greatest OS. So you have to decide what's more important: new features or supporting existing users.

Minimum iOS Version 5.0 & The App Store

We're talking about making the minimum iOS version of our consumer facing app 5.0+. We have a few questions, and I was unable to find a great resource for the answers:
For existing users with 4.xx, when the next update is released, will they just not see the update in the App Store? IE, until they update their iOS version to our new minimum version, they will never see the most recent update and will be "stuck" on the previous version?
For new customers with 4.xx, when they search for our app on the App Store, will it show up in search results? If so, what will be displayed when they click Install ?
Thank you for your help. I found lots of information on specifically 3.xx to 4.xx, but wanted to get a more detailed explanation for the scenarios explained above. If there is Apple developer documentation for this, please point me in the right direction.:)
Thanks!
Yes.
If you specify the deployment target for your app as iOS 5.x, your customers running iOS 4.x won't see an update on the app store and will be stuck at the previous versions of your app.
New customers running iOS 4.x will be able to see the app but won't be able to install it. They'll get a system error message that iOS 5 is required to install this app.
Hope that helps.
The App store on the device will filter out apps and updates that are inappropriate for the current iOS device OS version. The user won't see them (or if they see them on some devices, won't be able to download or install them).
However, the iTunes App Store on the customer's Mac or PC will not filter by OS version. iTunes will download apps that the user can't install on their devices running older iOS versions, and, far worse, will put any working app versions in the trash after downloading their useless updates.
The App store does not filter apps based on the operating system of your device. It will show iOS 5 apps even if your device is iOS 4. The update will definitely appear in iTunes. I don't know about whether it shows up in the updates in the app itself.

Can I prevent users with a too-old OS version from downloading my app?

I currently have an app in the app store that works for iPhone users running iOS version 3.0 or newer. My next version of the app is going to use ARC, so it will only work for users running iOS version 4.0 or newer.
According to this answer, the users will be able to download the newer version, but it just won't run when they try to run it.
Is there any way to prevent users who can't run the app from even downloading it from the AppStore?
I haven't tested this recently, but in February 2011, and iOS 4.x, I had users who couldn't download my app as there device wasn't running the required version of iOS.
They received a nice explanation message on their device, courtesy of the App Store app, when trying to download the app directly to their device.
I'd be very surprised if this wasn't still the case.
So, set the deployment target in your target build settings, and let the App Store / iTunes take care of who can install it.
That was for new installs, and it be different for updates (rather than new installs) but again I'd be surprised if this wasn't handled by Apple for the sake of a better user experience.
UPDATE
I dug out my old iPhone 3 which reached the end of the road at 4.2.1 and resynced it with iTunes - the latest apps that require 4.3 etc are ignored, and are not overwritten with incompatible versions, as I would expect.
I also tried to update my own app (I'm a developer), requiring 4.3 and above, from the store via the device itself, and got a polite pop-up alert saying the app requires iOS 4.3 and above, again just as I'd expect.
The app was previously compatible with < 4.3, and somewhere along the line I bumped up the minimum iOS version requirement, so it is definitely possible.
So, you should just set your updated app's 'deployment target' version appropriately, and it will only be updated on compatible devices.
No. A new higher minimum Deployment target will prevent a user from installing an app on a device with a lower OS version, but will not prevent them from downloading the app using iTunes on their Mac or PC, even though they can't install the update once downloaded.

Upgrade iOS application to newer OS?

I am a little curious what happens in the following situation. You have an existing app on the iTunes store (with customers) that uses iOS4, you then release an update to the app that uses a newer iOS.
folks that have upgraded to the "newer iOS" will get the update.
What will happen to those that have not updated, will they still be able to use their old iOS4 version?
Your "deployment target" is what matters. Setting the deployment target allows your app to set it's minimum required OS version. Many developers like to set that as far back as possible, unless your app depends on a features only available in a new iOS version.
Lets say you have an app compiled with the iOS 4 SDK and set 3.0 as the deployment target.
Users with iOS 3 or iOS 4 (and iOS 5) can download your app and use it.
Now you release an update compiled with the iOS 5 SDK and set 4.0 as your deployment target.
Users with iOS 4 or iOS 5 can download or upgrade your app and use it.
Users with iOS 3 that have purchased your app already cannot upgrade, but they can continue to use their existing installed version.
Users with iOS 3 that have not purchased your app yet will now have no way to do so.
Apple will only keep exactly one version of your app on the app store.
Unless they download the newer version, they will of course still be able to use the old one. It's possible however that they download the update unintentionally via iTunes on the desktop. The App Store on the device itself would check if the device's OS version is compatible with the app being downloaded, but iTunes does not, so it would replace the old version in the iTunes library, leading to the app being removed from the device when the user syncs it (because the downloaded version cannot be installed).
So, for existing apps, you should keep your deployment target as low as possible and decide at runtime which additional features of a new OS version you can use. This way, you can keep compatibility with older OS versions, but still provide additional features to those who have upgraded.
Usually (although not always), new OSes are the same as the previous ones but with new features. Older versions of apps often work with the latest OS but don't take advantage of the new features. The only problem users usually have is crash problems but it all depends on which APIs you use in your app.
Additionally, updates are never 'forced' upon a user - they are always optional. When it is a case that the app only works on a version of iOS which is higher than what the user has, then the update will not be offered to the user at all. They will still be able to use the older version that they have installed on their device. Apps have no expiry date.
If you want to retain compatibility for as many iOS versions as possible, you can set your iOS deployment target to the minimum OS you want your app to be compatible on. The SDK version number should not matter, but to support the latest iOS features, you would need the latest iOS SDK.
You will still have to check your APIs compatibility with the version you are targeting as a minimum OS. Look here and search for "API Diffs". Each document lists changes to the API for that iOS version. This will lists new and removed APIs as of that version. For example, UIPrintPaper, which is listed in the iOS 4.1 to 4.2 API diffs document, is a new API to iOS 4.2. So, when running on iOS 4.1 or earlier, the app will crash when calling that API. Using #if __IPHONE_OS_VERSION_MAX_ALLOWED <= __IPHONE_4_1 around your UIPrintPaper snipper will fix that problem.