I will soon be uploading a new app to the App store. I have a question concerning the build version of the app. Does Apple still allow us to upload an app that has been build for iOS 7, since I know Apple is kind of forceful about staying up-to-date. I can't find anything about it while googling.
Thanks
The deployment target is the lowest iOS version your app is supporting and Apple doesn't limit that (AFAIK). So if you want to (and are able to), you can still submit an app that runs on iOS 5, for example (iOS 5.1.1 is the newest iOS version for first-generation iPads).
Apple does specify the lowest acceptable Base SDK (the libraries you're linking against) when submitting, though (they change this every few months/years and announce this to developers via e-mail). If you're using the latest non-beta Xcode, you're always fine. Submissions from Xcode beta version are never accepted.
Related
I recently built an (universal) app for iOS in XCode 11.7 with deployment target set to iOS 10.0 (as per the Build Settings tab in XCode). Then I deployed that app to Testflight and was able to download and use it on a newer iPhone with the latest iOS.
However, when I tried to testflight it on my other iDevice (and old iPad 4th Gen that only runs iOS 10.3), Testflight told me that the app is only compatible with iOS 12.1 or higher. However, I've recently tested another app on Testflight built with (as far as I can tell) the exact same build settings using same MacBook and the same XCode, and that app installed on my iPad via Testflight without problems.
It sounds like the problem in App not compatible on iPhone 4s and 5 in Testflight and related posts, but my settings for "Build Active Architecture Only" are already set to "No" for Release.
I've already checked the Apple Compatiblity Matrix https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html but I am not using any special features.
There are only few things left I can think of
I implicitly (and without meaning to) use some feature of the newer iPhones that are not included in iOS 12.1 or below
I checked in the appstore that the app contains "medical information" (it's just anatomy drawings for students), so maybe this triggered an implicit requirement of Apple Health Kit (which does not run on iPad 4t Gen). This seems unlikely, however, as I only stated this in the App Store listing, not in XCode.
Somewhere in the settings, there is still one remaining switch left to "only support iOS 12.1 or higher" and I just have not found it, If so, please point out where that might be
The app that successfully installed on Testflight is an update for an older app that was published in late 2019, so maybe Apple forces new Apps to require iOS 12.1 or higher (since all apps have to be built against SDK 12.1 now) regardless of built settings, but updates for already existing apps are still allowed to run on lower iOS versions. Is this the case?
Or am I missing something entirely different?
I am making an app and I have already spoken to several people about it. They would like to download it once it is released on the app store.
I received an email and have researched into the changes which state:
"Starting July 2018, all new iOS apps and updates submitted to the App
Store must be built with the iOS 11 SDK."
Some of the people I have spoken to have older devices which cannot run iOS 11, and I will not be able to run it on my own phone either (I will on my iPad, however).
I therefore want to release on iOS 9, but will not be able to do so before July, and so will I still be able to release the app and the people I have talked to who have older devices can download it?
After doing some reading, it seems like you can set the Deployment Target lower than the 'Base SDK'. Is this true? How would this work if iOS 11 can do things that iOS 9 can't do?
I am therefore asking for clarification and answers to the 2 questions above.
The message means that your app must be built with a Base SDK of iOS 11. And this means you need to be using Xcode 9. It's always best to use the latest tools. Apple is always pushing developers forward.
But this does not prevent your app from supporting older iOS devices. If you wish to support back to iOS 9, set your project's or target's Deployment Target to iOS 9.0 (or whatever older version you wish to support).
The Deployment Target defines the oldest version of iOS your app supports. The Base SDK defines the latest APIs you can use.
The trick is to ensure that if you use a newer API in your app, it must not be used when the app is run on a device with an older version of iOS.
There are plenty of discussions that cover the details of this but in short, use #available around any API added after whatever Deployment Target you have set.
Update as of July 5, 2018:
According to the Supported Xcode and Application Loader versions help page, Xcode 9 is only required for new iOS apps and iOS app extensions.
My App Store question doesn’t seem to be answered clearly in the official guidelines document so here you go.
My app is developed for iOS8, its deployment target is 8.1. We would like to have it reviewed around next week.
Now there is the iOS9 version coming up. Will I be able to upload our binary to itunesconnect without any change? Will we have to compile with a newer SDK to pass the review process? Will I need to install a new version of Xcode do be able to upload a binary?
We would like to submit the app as is, without touching anything. (same situation as if it had been release 3 weeks ago) Is that possible? Thanks
Will I be able to upload our binary to itunesconnect without any change?
Yes. Apple will not require that you build your app against the latest SDK. Will you have problems with folks running iOS 9? Maybe?
Will we have to compile with a newer SDK to pass the review process?
No.
Will I need to install a new version of Xcode do be able to upload a binary?
No.
We would like to submit the app as is, without touching anything. (same situation as if it had been release 3 weeks ago) Is that possible?
Yes.
Also, here's a great post about the difference between the Base SDK and the Deployment Target settings: What's the meaning of Base SDK, iOS deployment target, Target, and Project in xcode
I released an iPhone app with deployment target of ios8.2 accidentally, I wanted it to work with ios7.
I have two questions
1. Is there any way to easily change this or do I need to release a new app version
2. If a new version needs to be released do I need to test this on a real iPhone running iOS7 i.e. do I need to downgrade my test phone before I can submit this update?
If the app isn't approved yet, you can remove it from review in the app's page in iTunes Connect, and submit a new build.
If the app is approved already, you have to create a new version to submit a new build.
In testing, you can test the app on the simulator, and if needs some real iPhone components, you can test on iOS devices 7.0 or above. You don't have to downgrade since the app will work on iOS 7.0 and above. However, there can be some bugs in older iOS versions, where devices with older versions can be useful (but you can't downgrade your devices - Apple prevents it). To test it on older versions, you need a device which hasn't been updated yet, or older versions of the simulator which Apple provides in Xcode (Check Xcode Preferences -> Downloads)
After seeing this cocos2d topic I became confused. Do I need to install Xcode 4.5 to submit my app to iOS App Store?
As the comments imply if your deployment target is ios5.1 or older you can use older Xcodes to do this. I just did this last night. That said, if some library you want to include was built against the new ios6 SDK, then you will probably not get your app to link. In this case you will have to update Xcode to 4.5.
Currently, if your app does not require any iOS 6 APIs or features, you do not need to install Xcode 4.5 to submit apps to the App store.
Apple may change this requirement at some unknown point in the future. For instance, when the SDK for iOS 4.0 was publicly released, Apple stopped allowing the submission of apps developed with the, over 1 year older, 2.x SDKs.