在Info.plist中使用UIRequiredDeviceCapabilities来限制兼容设备

时间:2018-01-16 16:40:04

标签: ios

如果我只希望我的应用程序在某些iPhone / iPad型号上运行,那么即使我的应用程序实际上没有使用ARKit中的任何内容,是否适合指定我的应用程序需要ARKit才能实现此目的?

还有其他方法可以解决这个问题吗?此外,即使在进行此更改后,我的应用程序仍然为不应该像iPhone 5s模拟器的设备构建。设备限制是仅在应用商店中发生的更改吗?

1 个答案:

答案 0 :(得分:4)

  1. UIRequiredDeviceCapabilities可让您声明应用运行所需的硬件或特定功能。

  2. UIRequiredDeviceCapabilities可用作Info.plist中的字典,其功能为键,其值为YES / NO。

  3. 它似乎对模拟器没有任何影响,但在设备上运行它虽然编译但显示提示但不运行: enter image description here

  4. 即使您没有在任何地方的代码中实际使用该功能,您似乎可以使用功能来限制设备。

  5. Apple提到here AppStore使用此密钥阻止用户安装该应用。

  6. 此外,我们无法使用此密钥限制更新中的任何设备。看起来任何预期的限制都需要包含在第一个应用版本中:

  7.   

    重要提示:提交时必须更改所有设备要求   对二进制文件的更新。您只能扩展您的设备   要求。提交二进制文件的更新以限制您的   不允许使用设备要求。你无法限制   设备要求,因为此操作将保留拥有的客户   以前从运行新更新中下载了您的应用。

    修改

    1. 即使iOS版本没有该特定功能,设备功能限制也似乎有效。为了测试这一点,我将部署目标设置为iOS 9.3,并在具有iOS 10.3.3版本的iPhone 6设备上进行了测试。它仍然向我展示了弹出窗口。在这里,arkit和nfc可用于iOS 11及更高版本。
    2. enter image description here

      参考文献:
      https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html

      https://developer.apple.com/library/content/qa/qa1397/_index.html