Analytics: How to detect 32-bit only devices? - ios

Currently iOS 10 supports both 32-bit and 64-bit binaries. Come iOS 11 only 64-bit binaries will be accepted.
We need to figure out how many of our users are currently running on 32-bit hardware, however iTunesConnect Analytics doesn't break down the devices by:
Device Model, or
CPU Architecture
The only breakdowns are by device family or iOS version. This isn't granular enough.
An "iPhone" device family could be iPhone 5c or iPhone 6. The former is 32-bit, the latter is 64-bit.
Similarly, an "iOS version 10" metric could be iPhone 5c or iPhone 6. The former is 32-bit, the latter is 64-bit.
How can we identify currently active devices that are on 32-bit architecture and would become obsolete?
Update:
To reiterate, as this keeps coming up: we are looking into a way to determine this using Apple's Analytics or other developer tools.
Obviously integrating a 3rd party SDK or even our own code to detect and report is easy enough, but a little late in the game.

In this answer I will address the root question which is: "How do I determine how many 32-bit device users I will lose when Apple bans 32bit apps from the App Store for the iOS 11 release?"
As anticipated in the comments, Apple has NOT banned 32bit apps from the App Store as of Sept 23, 2017. Instead, they have continued to support 32bit apps in the App Store for older devices. The only requirement at this time for apps is that they must support 64bit as well.
This is because the requirements for iOS 11 and for the App Store are independent sets of requirements.
I have been able to confirm this by viewing the available updates for my 32bit iPad 2 running iOS 9.3 (see below). I can confirm that the apps do run (though rather slowly due to the old hardware).
While this issue is not currently a concern, I would keep an eye on Apple's Developer News and Updates page for future changes in app submission requirements.

Related

What are the *real* requirements for iOS development

As far as I can see, the requirements to develop for any iOS device are:
1. Own a Mac computer that runs the latest version operating system.
2. Register with Apple to be an iOS developer for $99.00 + tax, annually.
3. Own an iOS device that runs the latest iOS operating system your application will support. For a professional iOS developer, that means the latest operating system out.
Am I wrong?
If so, where? I've just bought a brand new iMac and I'm looking for a used iPhone. I want to make sure I buy one that will allow me to develop iOS in the latest version.
Yes, I worked at a company doing iOS development and I had to do those three things (They handled the registration), and nothing more. You don't need a physical phone either though, XCode comes with a pretty good simulator. When working I almost always used the simulator, occasionally pulling the real device for touch/UI testing. It's still important to check functionality in real life if you have a nontrivial UI, since it's hard to know how the UI "feels".
You need the latest version of Xcode (requirements for Xcode 10 can be found in this post). Having a relatively up to date Mac usually does the trick.
You need an Apple Developer account - $99 / year for personal account or $299 / year for enterprise account.
You do not technically need any iOS devices to do iOS development and releases; however, the simulator does not have all the functionality a real device has. So depending on your features, it may be required. Also, some bugs only show up on certain devices, so it’s always good to test on as many real world devices as possible. For more details on the capabilities of the iOS Simulator, check here.

Version Requirements for iOS development

I am an experienced developer starting on my first iOS project. I am comfortable with the hardware and software that I will be using, but confused about the dependencies between the various components to achieve what I need to do.
Here's what I have:
iMac 21.5 inch, i5 processor 2011 vintage
OSX 10.7.5
XCode 4.2.1
iOS SDK 5.0/4.3/4.2
iPhone 4 running iOS 7
I first became aware of a problem, when XCode refused to let me download the app I am developing to the device. Presumably because I am targeting iOS 5, while the phone is on iOS 7.
I am hesitant to rush off and upgrade everything, as I am aware with Apple this is often a one-way street. For example, I bought the iPhone second hand that the vender had already upgraded to iOS 7, and now I cannot downgrade.
Here's what I want to be able to do:
Use my current hardware for development
Publish new apps in the App Store
Test my app on my iPhone (and preferably older models also)
Support iOS7 plus as many older iOS versions as possible
If possible, have the app use older controls styling (-iOS6) on iOS7
Can someone help me with my thought process through the various dependencies, and what versions I am going to need to achieve these aims?
You'll still be able to develop for iOS6 and earlier if you have the latest version of XCode, just set your deployment target accordingly. With XCode 5 though Apple stopped including the iOS5 simulators and earlier, so you would have to manually download it and include it if you wanted to use that.
Note that to develop with a real device (not just on the Simulator), you need to have an Apple Developer license and have added the device through the Developer portal.

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.

Performance testing of native iOs apps

I have a native iOS app developed in house which need to be tested for performance. Any suggestions regarding this like the approach, tools that can be used for this etc.
I would disagree with the notion that if iPhone 3GS works it works with everything above. I have done lots of testing across devices and versions of iOS and find bugs all the time that don't manifest on iOS 5 but will on 6 or 7. Bugs that happen on one device but not another because of performance differs in the hardware.
I would suggest that identify who your primary audience is and what devices they are likely to be using. What device/os combinations do you care the most about making a "legendary" experience. Do you want to limit/complicate yourself to supporting an older SDK or simply build against the latest and greatest?
Once you have these questions answered, get a few physical devices if possible for "real" testing, and then use simulator to flush out and iOS version bugs. A good spread might be an iPad 2, iPad Air, iPhone 4, and iPhone 5 or 5s.
Hope this helps.

How do I target an app to work on ipad 2 or newer (not ipad 1) before submission to appstore?

My app is for the iPad 2 only. I have seen other answers involving setting the UIRequiredDeviceCapabilities key, but I need to exclude the iPad 1 because of the CPU power, not any specific hardware feature.
I would like the app to show up in the appstore for people in the future also (iPad 3 etc. should have equal or stronger processor than 2), so I need only exclude iPad 1 specifically.
Any ideas?
Set UIRequiredDeviceCapabilities to require front-facing-camera. I don't think they are going to cut down on features. There isn't any other way, it seems.
There appears to be no Processor_MHz_GHz, CPU_core_count or GPU_shader_count keys currently documented for the UIRequiredDeviceCapabilities plist. And Apple currently appears not to allow adding more hardware restriction keys to existing apps already in the App store.
So you appear to be out-of-luck, if you don't want to risk requiring a camera. Or just selling a new app (not an update) to support hypothetical future products.
ADDED/UPDATE (2012-September): You can now exclude a 1st generation iPad by specifying iOS 6.x as the minimum Deployment target in your build settings, since an iOS 6 update is not offered by Apple for the 1st gen iPad, whereas an iPad 2 and newer will run iOS 6.
In my opinion, CPU power is a hardware feature. Try disabling the ARM version of the iPad 1, so only newer iDevices will be supported.
Keep in mind though when disabling certain ARM versions you might also be excluding the older iPods and iPhones if your app is an universal one.
Bryan

Resources