【问题标题】:How do I set compatible devices to only ARKit compatible devices in Xcode?如何在 Xcode 中将兼容设备设置为仅兼容 ARKit 的设备?
【发布时间】:2023-10-20 06:14:01
【问题描述】:

如何确保我在 iOS AppStore 上的应用仅显示与支持 ARKit 的设备的兼容性?

【问题讨论】:

    标签: ios xcode app-store augmented-reality arkit


    【解决方案1】:

    所需设备功能下的info.plist 文件的密钥是arkit

    Apple documentation on plist keys (UIRequiredDeviceCapabilities)。

    :arkit

    说明:如果您的应用需要支持 ARKit,请包含此键 在设备(即配备 A9 或更高版本处理器的 iOS 设备)上。

    最低版本:iOS 11.0

    对现有应用的一个重要警告是,Apple 不允许您在应用发布后对其设备进行限制。

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

    如果您要向现有应用程序添加 AR 功能,您可以使用 ARKitisSupported 属性来确定是否应该公开此功能。

    【讨论】:

    • 谢谢,正确答案。尽管 Apple 目前似乎允许在发布应用程序后包含 arkit 密钥。我将 arkit 密钥包含在我现有的应用程序中,并且 App Store 将我的应用程序从 iPhone 4s 限制为 iPhoneSE/iPhone6S 或更高版本。值得一提的是,我的应用非常新,并且在 iOS11 发布日期发布。
    【解决方案2】:

    如果您的应用需要 ARKit 框架来实现其核心功能,那么您需要打开 info.plist 文件(位于 macOS Finder 中您的项目文件夹中)并在密钥 UIRequiredDeviceCapabilitie 像这样添加一个字符串 arkit

    <plist version="1.0">
      <dict>
        <key>UIRequiredDeviceCapabilities</key>
          <array>
            <string>arkit</string>
          </array>
      </dict>
    </plist>
    

    但如果增强现实是您应用的次要功能, 然后在ViewController.swift 中使用这一行。你的代码应该是这样的:

    if ARWorldTrackingConfiguration.isSupported {   
         
        let configuration = ARWorldTrackingConfiguration()             // 6DOF
        configuration.planeDetection = [.horizontal, .vertical]
        sceneView.session.run(configuration) 
    
    } else {  
    
        let configuration = AROrientationTrackingConfiguration()       // 3DOF
        sceneView.session.run(configuration)  
        print("This chipset does not meet the minimum requirements.")
    }
    

    兼容 ARKit 4.0 的 iPhone 列表如下(A9...A13 CPU):

    • iPhone 6s
    • iPhone SE
    • iPhone 7
    • iPhone 8
    • iPhone X
    • iPhone SE2
    • iPhone 11
    • ...及更高版本

    【讨论】: