Application Transport Security (ATS) and app submission - ios

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.

Related

Linking to an older version of iOS

Apple instated the following policy:
Apps linked on or after iOS 15 are limited to a maximum of 50 entries
in the LSApplicationQueriesSchemes key. Source
Is there a way to link to an earlier iOS version (like iOS 14.1) but release on the App Store and download on iPhones with iOS 15 installed to get around this measure?
How does one link to an earlier version of iOS?
You could declare your target SDK to be iOS 14 but why bother? If the past is any guide, Apple will soon stop accepting app submissions unless they’re linked against iOS 15. So whatever your use case is for so many entries, you’re going to have to find a workaround.

How come my non-ATS supporting app is working on iOS9?

I'm running the beta version of iOS 9 on my phone.
I downloaded my app from the App Store and it works.
When I install it from Xcode it doesn't work (since it is not supporting ATS).
How can that be?
When introducing features in new iOS versions Apple often checks for the link time or SDK version of the app.
Applying new rules only to apps that are linked to iOS SDK 9 for example, they can enforce the rule on new builds, where the developer should be aware of the rule. Old apps are left alone and keep working as before.
The version from the App Store is likely linked against an earlier SDK version. Apple determines behavior for some things like UI and, AFAIK, ATS, by looking at the linked SDK version.
Apple notices that App Store version is linked against an SDK version that doesn't know about ATS and enables legacy support. But your version compiled in Xcode is linked against a SDK version that does know about ATS and Apple therefor enforces the rules.

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.

Submitting iOS 5 apps during the transition to iOS 6

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.

Does Apple state which SDK version is mandatory to use for iOS apps?

Does anyone knows if there is a document from Apple that states what iOS SDK version you have to use for building your app to upload it to iTunes Connect?
I often read in blogs "only the latest", but I need this official from Apple because our vendor wants to build against the iOS 4 SDK because of "strange errors with iOS 5".
I'm not sure if this is OK. We want to run the app to run on iOS 4 and 5.
I too had read what you had—that the latest SDK had to be used... Yet, I haven't found an official source for this now I go looking for it.
Using the iOS 5 SDK does not prevent you from having a build target of iOS 4.2 (or similar), which will it to run on both iOS 4.2+ as well as iOS 5. Perhaps a good starting point is educating the client that there is a fundamental difference between the iOS 5 SDK and iOS 5 itself—they may well just be reacting to media coverage of iOS 5 issues like battery life.

Resources