The right way to extend UIRequiredDeviceCapabilities

I've added NFC support for my app. So, my UIRequiredDeviceCapabilities were extended from "armv7" to "armv7 nfc". This means I've prevented this application from running on devices supported by previous versions. Now I've received a message from Apple:

ITMS-90109: This bundle is invalid - The key UIRequiredDeviceCapabilities in the Info.plist may not contain values that would prevent this application from running on devices that were supported by previous versions.

What is the right way to add new functions?

Answered by endecotp in 752460022

If NFC is now essential, you need to create a new app.

It would normally be better to make NFC optional, by continuing to provide the old behaviour on devices that don’t have NFC, and not adding it to the required capabilities.

What devices don’t have NFC now? With some of these capabilities you can require them by requiring a sufficiently new iOS version which only runs on hardware that has the feature. One example of that was OpenGL ES 2. Apple do allow to to require a newer iOS version that excludes some existing users.

Accepted Answer

If NFC is now essential, you need to create a new app.

It would normally be better to make NFC optional, by continuing to provide the old behaviour on devices that don’t have NFC, and not adding it to the required capabilities.

What devices don’t have NFC now? With some of these capabilities you can require them by requiring a sufficiently new iOS version which only runs on hardware that has the feature. One example of that was OpenGL ES 2. Apple do allow to to require a newer iOS version that excludes some existing users.

The right way to extend UIRequiredDeviceCapabilities
 
 
Q