Is it worth it to continue supporting iOS 4.x when iOS 6 is released? - iphone

I am working on a major feature update for my application and would love to include features such as iCloud, Core Data, ARC and storyboards among other things. The issue is that I don't have data on how many users are still running 4.x. I realize that the ideal solution would be to support both at once and just select the available features based on what version the particular device was on, but my upgrades would be so substantial that this would be very difficult. Does anyone else have reliable data on the percentage of users on older versions? And also would it be advisable to release an iOS 5+ version of my app separately as an "App 2.0?"

... my company`s app still suport ios 3.x ,although only 2% on ios 3.x and below... but we can do the vast majority of ios4.0+ effect with 3.x and below API.

Here's an article for reference.
80% on iOS5
With the OTA updates, Apple devices are normally upgraded very quickly. The decision to create an iOS5 only app early this year was not too hard to make and more so now.

I believe iOS users are the fastest ones to upgrade when there's a new update. Also I don't know if it is accepted to have 2 different apps for different versions of iOS. What you could do is having the app check what version of iOS the app is running and exclude the features that are unsupported for lower versions.
Can't find any really reliable sources but you could check out some update stats around.
Link

Changes for ios 6 and Xcode 4.5.x
Xcode 4.5.x (and later) does not support generating armv6 binaries.
Now includes iPhone 5/armv7s support.
The minimum supported deployment target with Xcode 4.5.x or later is iOS 4.3.
The minimum support for iPhone is iPhone 3GS or later as earlier versions use armv6.

Related

IOS8 App Supports for IOS 7 and IOS 6?

I am going to develop an Iphone application in IOS8.But I have no idea whether it will work on IOS7 and IOS6.Can anyone clarify my doubts with clear explanation?
Thanks & Regards
Sam.P
It would only support the older OSes if you didn't use any features exclusive to the newer OSes, and if you targeted the old OS when building the application. There is nothing stopping you from doing so, except that you will miss out on a lot of the new technologies (and adoption of recent iOS versions is very high traditionally among Apple's customers, so it isn't a huge issue generally to only support the latest version).
You must make this decision before you publish your app, the earlier the better. You can support all OSes starting from 6 and only use APIs and features available in 6. Or use all the new features of the 8 and make the app incompatible with the earlier versions.
Each published app has a target OS version. If you specify 8 then users with earlier OSes simply won't see your app in the app store. However it's not sufficient to set your target to 6 to support earlier system. You must be careful in using the APIs: each has a documented version where it became available. And you must test, at least in simulators with different OS versions. iOS 6 simulator is still available as a separate download for Xcode 5. I'm not sure about Xcode 6.
iOS 7 adoption wasn't as overwhelming as with earlier updates because Apple made big changes in the UI. So the iOS 6 user base is still significant. I think it still makes sense to support iOS 6 for a new commercial application.

Supporting old iOS versions and devices

I need an iOS app to be compatible with previous iOS versions, at least from 4.0, and also with prior devices (iPhone 4S, 4, 3GS... and likely all iPad devices). I found some posts dealing with the iOS versions backwards compatibility that already have some years (for example, How to build against older iOS versions with the latest Xcode downloads?), and I don´t know if this is deprecated or it still is the way to proceed, at least concerning the app building. Regarding programming issues, I guess I should check the documentation to know if the SDK features/libraries/frameworks I want to use are supported by all the iOS versions I want to be compatible... And having such information, how could I check programmatically the iOS version the device is running, in order to provide a certain feature or not?
On the other hand, regarding iOS versions and devices running them: could I find any Apple document listing which iOS versions supports each existing device? What hardware-dependent issues should I take into account while developing the app?
Thanks so much
Edit: Target architecture(s) is the only hardware consideration I've to take into account? Knowing that, for example, an iPhone 3GS is able to run, and is running, iOS 6.1.3, can I assume that the device will then support all the SDK's features, or I still need to check for the availability of such features depending on the device?
with the newest xcode version that supports iOS 6.0, you cannot develope for devices with iOS < 4.3 (lowest base SDK), and also the version that supports iOS 4.0 doesn't support iOS 6.0. For older devices you have to set the Architectures to armv6 armv7 in you project-settings tab "Build Settings".
for checking the iOS Version running, just check the available posts here at stack, you will find one that fits for you ;)
All in one I would set the base SDK to 5.1 because it's the last that can be used by iPad 1 and iPod touch 3. gen. and long enought available so everyone should have the latest update.
Older devices can have only iOS 4.2.x and are not supported by current xcode (4.6.2 (4H1003)).
iOS Support Matrix v2.4
This version is updated and includes iOS 7.
Link: http://www.iossupportmatrix.com
There is a great infographic that shows what versions of iOS are supported by which devices at http://iossupportmatrix.com.

iPhone and SDK different version compatibility issues

I am a beginner Apple developer and I have some issues I would like to resolve.
First of all, I am curently working on Xcode 3.2.6 because I haven't enrolled for the developer program yet. I would like to know if Apple only accepts apps (for the App Strore) compiled on SDK 4.
Secondly, I want my apps to work both on iPhone 3 and 4. What would you advice me to do? I have read in several developer forums that in order to achieve this I have to build my application with 3.1 iOS as a target. Is this correct?
Finally, is there any problem due to the difference in resolution between iPhone 3 and iPhone 4? Which resolution do you think I should use?
Thank you in advance,
Cherry
Set Base SDK to latest (4.3).
Set Target SDK to 3.1.
Avoid features available only in iOS 3.2 or later (e.g., don't use blocks, don't frameworks introduced in iOS 3.2 or later, always check availability of methods). Later, when you get more experience with Objective-C, you may try to combine features of more modern iOS, but still keep compatibility with older iOSes.
Don't worry about resolution. It affects only images – if you want to take full advantage of Retina display, then you will need to create images for both resolutions (std. and hi-res).
P.S. I suggest you to avoid support for iOS 3.2 or earlier. iOS 4 introduces a lot of nice and helpful features. And I pretty sure, Apple will revoke support for iOS 3.x soon after iOS 5 release.
If you are aiming for iOS 3, you will end up not using the features of iOS 4, which is the majority.
This is Apple's statement.
Target the latest iOS release.
Targeting the latest release allows you to take advantage of all the features
available in the latest version of iOS. However, this approach may offer a smaller
set of users capable of installing your application on their devices because your
application cannot run on iOS releases that are earlier than the target release.`
Target an earlier iOS release.
Targeting an earlier release lets you publish your application to a larger set of
users (because your application runs on the target OS release and later releases),
but may limit the iOS features your application can use.`
But I would suggest that you target the iOS 4 as people are now targeting iOS 5, and in another 8 months, I am sure Apple would release iOS 6 (They are very quick with their updates), and I personally feel that targeting iOS 3 is not going to give you great results in the long run.

how to set compatibility of IOS on app

I just submitted my app for distribution, when it showed the following message:
"The binary uploaded for the latest version of this app indicates that iOS 4.3 or later is required. Apps that require iOS 4.3 or later will not be available to Verizon iPhone users. If this app could be compatible with earlier iOS versions, you may want to reject the binary and upload a new one that indicates the earliest compatible iOS."
I would like to make the app verizon compatible, if the process is quick.
If I just change the IOS deployment target on my project to 4.0, should it be ok?
Thanks.
It should, if you haven't used some too recent features obviously.
Update: here's a checklist from the official docs of what's new in iOS 4.x
Game Center
Printing
AirPlay
Various enhancements (iAd, Media player, etc...)
It depends what frameworks and other features you are using with your app and whether they are compatible with iOS 4.0. If there are features not compatible, you might be able to disable them for earlier versions, using "weak linking". If possible, test your application on a device using an iOS version earlier than 4.3.

iOS 4.3 SDK - Debugging on a 3G Device

Information on the subject of iOS 4.3 device support is pretty thin on the ground at the moment. However, the lack of a 4.3 beta for iPhone 3G devices (and older iPod touch devices) leads many to believe this could be the end of OS upgrades for older devices.
Even if this assumption is incorrect right now, one day it won't be. There are hardware limits that will eventually stop Apple from supporting the oldest of devices with new iOS updates.
Given that iPhone application development debugging has the requirement of both iOS SDK and iOS version being the same, how would one continue development using iOS 4.3.x SDK releases while doing device performance testing on an iPhone 3G (or older device)? Are there ways of debugging over different iOS/SDK versions? Or do we have to simply drop development support for the older devices and tell those customers who don't upgrade their hardware: "tough"?
You should have no problem running code written using the 4.3 SDK on an older phone. I'm currently doing testing using the latest beta SDK, but running the code on a iPhone 3G running 3.1.3. As long as you are careful to check for the existence of newer methods/classes, your app will continue to run on old OSs. I'm not sure where you heard that OS and SDK versions need to match to debug; that is not true.
If you're willing to forgo the latest features, you should be able to support the original iPhone as long as you like.
You have to set a deployment target with an earlier build number - you can still target 3.0. You just have to be careful about what frameworks and calls you use and check for compatibility.
Since the newer SDK's do not have simulators that support earlier IOS versions, it's important to keep around devices with older builds.
For using iPhone 3G as debugging device in Xcode 4.3 just go to Build Setting and edit
the Architectures to armv6 and armv7 both. armv6 architecture is used for older devices.
Select the Deployment target 3.0.
This will work.