Submitting iOS 5 apps during the transition to iOS 6 - ios

Has Apple made any announcement as to how long they will accept apps built using the iOS 5 SDK (as opposed to the new iOS 6)?

No, and they don't tend to make any such announcements.
That said, you'd normally build against the iOS 6 SDK and simply set a deployment target of 5.0. Numerous bug fixes usually occur in the compiler-side part of the SDK between releases that don't relate to new features.
The legacy simulators will allow you to continue to test appropriately directly on your computer and obviously you can continue to connect up a real iOS 5 device.
The real question is when Apple will stop accepting 5.x deployment targets for the App Store. As they still accept 4.0 now I suspect that'll be a while.

Related

Using latest version of Xcode 8, support and test on for iOS 5.1.1

I have been searching for an answer for this for a while now and I can't seem to get a straight answer anywhere. I'm new to iOS development and am looking to get started porting my android app over to make my first iOS app. I'm not a big apple user, so I'm just running xcode in a VM and trying to build and test on my old ipod touch 3rd generation running iOS 5.1.1. I understand how out of date this is, but I want to develop and test on this device for 2 reasons:
I dont want to buy a $750 new apple product just to test my very simple app
When I publish my app, I want to reach the most users possible
So my question is this:
In xcode 8, is it possible to develop applications with a deployment target of iOS 5.1.1?
If so, will it build for all versions of iOS?
When I attach my ipod to xcode, it says device is not supported, can I fix this by installing some 5.1.1 developer package or sdk to allow support? Or would I have to build, then manually install and test each iteration?
If all of these are possible, and I build an app targeted to 5.1.1, can I publish it to the app store? If I open the app store on my 5.1.1 ipod, there are still apps in the store with recent update dates, so people must still be releasing updates to apps on iOS 5.1.1 right? Or am I missing something and an app that runs on iOS 5.1.1 is entirely banned by Apple.
A lot of questions, but If possible I really want to do this. Even getting a fully known, confirmed answer for ANY of these questions would be greatly appreciated.
Thanks
I dont want to buy a $750 new apple product just to test my very
simple app
Xcode has a simulator, you don't need a device to test your app.
When I publish my app, I want to reach the most users possible
As of July 31th 2017, https://developer.apple.com/support/app-store/
86% of devices are using iOS 10.
11% of devices are using iOS 9.
3% of devices are using earlier. (probably iOS 8)
It makes sense that you have this concern coming from Android, but iOS is quite different. Devices are designed to be uniform and apple encourages (almost forces) people to update them. (You won't stop receiving a notification to update your device)
It would actually be bad to focus on developing for that specific device you have, specially because a lot of the APIs will be deprecated, plus the screen ratio of that specific device is not so common.
In xcode 8, is it possible to develop applications with a deployment
target of iOS 5.1.1?
No*
If so, will it build for all versions of iOS?
Kind of, it will run but it won't probably be what you expect until you FIX it for that specific iOS version. (many things break between iOS updates so developers are sometimes forced to branch code)
When I attach my ipod to xcode, it says device is not supported, can I
fix this by installing some 5.1.1 developer package or sdk to allow
support? Or would I have to build, then manually install and test each
iteration?
Maybe, but probably not. You can actually copy files from older xcodes to enable testing in newer ones. You can search about how to do this by googling for "Using iOS 7 in Xcode 8". However I doubt going as far back as iOS 5 will be possible. The Xcode needed for running on iOS 5 is not even supported macOS Sierra (The newest OS)
If all of these are possible, and I build an app targeted to 5.1.1,
can I publish it to the app store? If I open the app store on my 5.1.1
ipod, there are still apps in the store with recent update dates, so
people must still be releasing updates to apps on iOS 5.1.1 right? Or
am I missing something and an app that runs on iOS 5.1.1 is entirely
banned by Apple.
Theoretically yes, iOS Apps can still "support" old iOS version, the reason why developers drop support for older os is because it gets increasingly hard to debug them as well as they just don't have support for new features and APIs that come with newer iOS.
My suggestion if you are really obsessed with building for iOS 5.1.1 is to ensure it's a 64 bit app:
https://developer.apple.com/library/content/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html
And Download an old version of Xcode: (Maybe Xcode 7 or 6?)
https://developer.apple.com/download/more/
But I think you still have to Build with xcode 8 since you need to build against their latest SDK. The old Xcode is just to develop for it and facilitate debugging.

Can I opt that my app support up to iOS 8.4?

I have submitted app and it got rejected as it crashed in iOS 9 devices. Can I opt out for iOS9 like I will say my app will support up to iOS 8.4. I don't want to support iOS 9?
No, you can not opt out of the current (or about to be released) iOS version. Apple will test iOS app submissions to their App store on the iOS version currently running on the devices that its customers are currently buying or will soon be buying just days from now. And that's currently iOS 9.0. Why put an app in the store that will crash a couple days after a customer buys it just before upgrading their device?
Also, most apps built with the SDK for the previous iOS version should work on devices running the next iOS version, perhaps after testing (and tweaking API usage) on devices running a beta version of that next iOS version, which is available to all enrolled developers. This testing does require Xcode 7 (although using the Xcode-beta or GM makes some of the testing and debugging a lot easier). There are other ways to put a test app on your test device, such as Ad Hoc deployment via iTunes.

Application Transport Security (ATS) and app submission

I searched online extensively but could not find any concrete/official information on the following questions related to submission of an app affected by ATS.
Q: ATS is applicable only on iOS 9 onward. What happens to older apps (built for iOS 8.x and below) when the device is upgraded to iOS9. Will they have ATS disabled by default or will they stop functioning if they are not ATS compliant?
ANS: Apps built for lower SDKs will opt-out of ATS by default. Was able to verify this using an iOS 9 beta 5 device.(app-dev-forum link)
Will applications that set the global ATS disabler flag (allowarbitraryloads) be admitted to the app store?
After iOS 9 releases, can apps linking to older SDKs can still be submitted to the marketplace? Apple is currently accepting apps with deployment_sdk of iOS 5
After iOS 9 releases, should apps be built with the release version of the SDK?
Q: I heard that if an app is built against beta versions, it will be rejected. Please correct me if I'm wrong.
ANS: Yes. Apps based on beta version of SDKs will get rejected.
Great if you can answer any of the above. I'll compile the answers in this post to make it easy for later reference. Would be great if you add any official links for ref. Any help is really appreciated.
As you said in your updated question, pre-iOS-9 apps are unaffected by ATS, because it only applies to apps linked against the iOS 9 (or later) SDK.
Yes. Disabling ATS globally is fine as long as there's a good reason for doing so.
With iOS 8, I think Apple started requiring apps to be built against the iOS 8 SDK about five months after iOS 8 shipped. So Apple might require you to build against the iOS 9 SDK at some point. Or maybe not. It's anybody's guess.
Yes, iOS apps should be built against the iOS 9 SDK at this point. Linking against the iOS 9 SDK probably won't be required (at least initially), but it is usually a good idea to keep up-to-date.
Yes, you must build against the final iOS 9 SDK version rather than any previous iOS 7 beta SDK.
Some of my answers are based on a personal experience, some on openion and some on documented apple guide lines.
It will not function on iOS 9 device.
From a personal experience. I had live app. that was functionning
perfectly in iOS 8.2 devices and once iOS 8.3 got released and those devices updated the App.
suddenly start crashing.
Set the ATS flag, build with iOS 8 (Xcode 6.X) and submit to the store.
PList is just a text file. It always can have non-recognized items by apple. As we always add values there for 3rd party libraries. I strongly don't think that apple's "current automated checker" will or supposed to check a future flag. and they will function for iOS 9 for the same reason app start crashing on point one!
Yes. Those should include the ATS flag. Otherwise, will be rejected.
Apps that do not perform as advertised by the developer will be
rejected. (2. Functionality 2.3)
NO.
Not applicable to force all developers to update their enviroment.
They only have to add the flag. Apple never did such a sudden
restriction.
True.
Refere to this answer. that shows a screen shot here.

Lowest permitted base SDK for App Store submissions

I'd like to know if Apple states the lowest permissible base SDK for submission to the iOS App Store. There was a statement somewhere around 2010 that said you need to use at least SDK 4, but i cannot find this any longer.
Now, before you jump me, I always build against the latest base SDK. The reason i ask this question is because i want facts to counter some customer requests.
Apple seems to have never explicitly required any Base SDK above iOS 3.0 as far, as far I can find, today, either in their app submission guidelines or any official developer email. Thus, there likely is no such link as you require. However there are many indirect hints.
As of 2013-May-01, Apple indirectly requires a Base SDK of 6.0 for submitting iPhone apps by requiring 4" display support and no longer approving any apps where 4" support was added using any Base SDK lower than 6.0 (that latter stated in their enrolled developer forums, login required). This requirement may or may not apply to iPad-only apps, where Apple might still allow submission using a Base SDK of 5.1.
There is a statement (in their enrolled developer forums, login required) from an Apple employee that currently a Base SDK of 7.0 or higher is not required for app submission, but with no date given as to when this may or may not change.
Note that if a developer uses an SDK lower than 7.0 to build an app, they still need to test the app on a iOS 7.x device or risk rejection by Apple if the app fails to run properly on such a device.
The Deployment Target of an app can get set to a much lower OS version. But an iOS Base SDK of 6.0 lacks armv6 support, and thus doesn't allow XCode to build an app with a Deployment Target lower than 4.3 where armv6 support is required.
You should always use the latest SDK as Base SDK whenever possible. If you set the deployment target to a lower SDK, your app will run on device with previous SDK version.
Starting from XCode 4.5 (and also in XCode 5) iOS 4.3 is the lowest available SDK for deployment target. You have no way to submit new App on the App Store running on SDK lower than 4.3.
To answer the initial question, Apple seem to still accept application compiled with SDK 6.0 ( at least a few weeks ago).
Apple has recently announced that as of March 27, 2019, you will have to have a base SDK of 12.1:
Upcoming App Store Submission Requirements
March 20, 2019
iOS 12 is now running on more than 80% of devices worldwide. Make sure your app delivers a great user experience by seamlessly integrating with the latest advances in iOS. Starting March 27, 2019, all new apps and app updates for iPhone or iPad, including universal apps, must be built with the iOS 12.1 SDK or later and support iPhone XS Max or the 12.9-inch iPad Pro (3rd generation). Screenshots for these devices will also be required. All new apps and app updates for Apple Watch will need to be built with the watchOS 5.1 SDK or later and support Apple Watch Series 4.
Understanding Changes in Memory Accounting
iOS 12 and tvOS 12 require apps to use memory far more efficiently than before. If you have difficulty reducing your app’s memory requirements, contact us to request an entitlement for your app to use iOS 11-style memory accounting.

Upgrading app to support ios5

I wish to update an app to support ios5 and up. CUrrently the app supports ios5 and below and i was wondering what the implications of setting the build to be ios5 and above would be to customers still using the ios4 app on ios4. Would app store refuse to download the ios5 and up app update and complain to the user to update their os to 5? what exactly would happen in this case?
The App Store would simply refuse to upgrade the app and tell the user to upgrade to iOS 5 (or 6).
That's the standard policy, so that if you have an old iOS you can still use your old apps.
As a side note, the cumulated market share of iOS 5 and up is more than 90%, so you won't have to worry about supporting old versions. Most iOS devs I know are moving on or already have.

Resources