I'm developing an iOS game using ARKit. The game concept only works if 6DOF tracking is available, which means that an A9 chip or newer is available.
I don't want users to install the game on older devices like an iPhone 6 - on these devices ARKit would fallback to 3DOF tracking, which doesn't make sense for my game concept (I need translation tracking).
How can I enforce this restriction, that the app can only be installed on devices supporting 6DOF (which, to my knowledge is equivalent to iPhone 6S or newer or iPad Pro or newer, or A9 or newer)?
I checked the iOS Device Compatibility Documentation and the UIRequiredDeviceCapabilities Reference but did not find anything suitable.
It doesn't seem to be in the UIRequiredDeviceCapabilities Reference yet, but as mentioned in the WWDC talk on ARKit there is a UIRequiredDeviceCapabilities key: using arkit in there ensures that your app is offered only to devices with 6DOF support.
Also, to clarify your list: 6DOF supported devices, aka A9 (and better) devices include...
iPhone 6s and later
iPhone SE
any iPad Pro
iPad 5th gen (just "iPad", but the one introduced April 2017)
Related
I would like my app to be used on iPhone8 or above only. I've checked iOS Device Compatibility but i believe it's outdated. No mention of the newer phones like XS/XS Max/XR.
iPhone8/X & above use the A11 Bionic chips, Water resistant to a depth of 1 metre for up to 30 minutes & supports Wireless charging or even devices with the notch. Features not available in older devices/models.
I have already restricted it to iPhone7 & above by using nfc as key in UIRequiredDeviceCapabilities
So is there a way to restrict my app to iPhone 8/X and above by setting the UIRequiredDeviceCapabilities keys? If so what are those keys?
Any help is appreciated.
I don't think you can.
An alternative could be checking the device on AppDelegate didFinishLaunching and prompting a device not supported then close app
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.
I'm working with ARKit Feature , with recent major iOS release, but I'm getting a crash with error failed assertion
MTLRenderPassDescriptor: MTLStoreActionMultisampleResolve store action for the depth attachment is not supported by device
I already have iOS11 beta, installed in my iPhone device.
As all answers above this is a hardware constraint to A9 chips. Anyway it is a good practice to addAdding ARKit to UIRequiredDeviceCapabilities on Info.plist will give you a better feedback running apps that primary function is ARKit based.
To be able to run ARKit your device should be able to support it. Not only using the latest iOS will help. As apple mention in the Keynote WWDC 2017 they support A9 chips and Above which means iPhone 6s and Above will be able to run and test ARKit.
Will Metal work on non A7 devices? (for example iPhone 5 or iPad Mini (not retina)). If not, is any way to create application for Metal supported devices only?
It is for A7 or greater. The WWDC videos say "Designed for A7" and they kept emphasizing that throughout the presentations.
Based on prior experience with frameworks I believe it would actually be based on iOS version and not processor, but Metal could be an exception. Apple does say "Metal provides extremely low-overhead access to the A7 GPU" in documentation making me believe it only works with A7.
Problem is solved. There is metal capability in device capabilities (in plist).
It's based on processor: it needs 64-bit gpu. I set my builds to arm64.
Metal is apple's implementation of OpenGL 3 supposedly without all of the "crud from 20 years of software dev" so the video says.
From what I can interpret from the runtime requirements of sample region monitoring code of Apple, region monitoring is available on iPhone 4, iPad 2 Wifi + 3G or later. So I'm assuming that it's not available on iPad1 with 3G, or iPhone 3G/3GS.
Is this a correct interpretation? I cannot test this since I don't have all those devices and I couldn't find an official documentation about this.
PS: I know that I can check for it in the code by calling regionMonitoringAvailable method but I need this information to decide for the architecture of my app, so I need to know this upfront.
From what I have learned from working on region monitoring enabled devices is that you are correct.
Currently, region monitoring is only supported on the following devices (running iOS 5.x).
iPhone 4
iPhone 4S
iPhone 5
iPad 2, 3, and 4 (new iPad) 3G/4G
iPad 3 and 4 (new iPad) Wifi
(would love some feedback for region monitoring on iPod Touch models)
I was told at WWDC that with the advent of the location tiles in iOS 6, that region monitoring would be coming to ALL iOS 6 devices. However, my testing so far has only garnered me the Wifi enabled iPad 3. I haven't been able to test on the iPhone 3GS yet, but I'm not holding my breath. It may be possible that they will enable this in a later beta or at launch, but I'm not optimistic.
Hope this information helps.