Augmented Reality 911 — Pivot table of iOS-based necessary features in ARKit and RealityKit

Andy Jazz
Geek Culture
Published in
3 min readDec 10, 2021

Despite the fact, that the first version of ARKit, released in Mid 2017, contained a pile of basic features (without which it’s difficult to imagine the value of any modern AR framework), the table below does not contain all those basic features — it contains up-to-date mature features.

iOS-centric features

The following pivot table is designed to give Apple developers a clear idea of ​​what key features of ARKit 5.0 and RealityKit 2.0 will be available to them in a particular iOS version.

In Xcode you can check if a config you’re interested in is supported. For example, the following code snippet helps your sample app check whether a device supports Geo Tracking at the app’s entry point, or not. Paste this code into AppDelegate file.

import ARKit@main class AppDelegate: UIResponder, UIApplicationDelegate {    var window: UIWindow?    func application(_ application: UIApplication, 
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if !ARGeoTrackingConfiguration.isSupported { let storyboard = UIStoryboard(name: "Main", bundle: nil) window?.rootViewController = storyboard
.instantiateViewController(withIdentifier: "Unsupported Config")
}
return true
}
}

Or, you can check in ViewController whether user’s iOS device supports facial tracking in a world-tracking session.

override func viewWillAppear(_ animated: Bool) {  
super.viewWillAppear(animated)

guard ARFaceTrackingConfiguration.isSupported,
ARFaceTrackingConfiguration.supportsWorldTracking
else {
fatalError("Can't fulfil a simultaneous tracking")
}
let config = ARFaceTrackingConfiguration()
config.isWorldTrackingEnabled = true

arView.session.run(config)
}

This guard statement is self-explanatory:

guard ARWorldTrackingConfiguration.supportsSceneReconstruction(
.meshWithClassification)
else {
print("A device with a LiDAR scanner is required.")
return
}

Chip-centric features

In addition to the restrictions based on the iOS version, Apple has introduced restrictions based on the chipset version. If you are using earlier devices than models equipped with A12 Bionic, you can’t use such significant features as:

  • Real-world surfaces’ Classification
  • Simultaneous 3 faces tracking
  • People Occlusion
  • Simultaneous Front & Back camera tracking
  • Raytraced shadows support
  • Real-world Body MoCap
  • Geographic location tracking (GPS sensor is needed)

Therefore, do not forget to provide Xcode’s Info tab with “Minimum Performance A12” capability.

TIP: Xcode 13 doesn’t have a separate Info.plist file anymore.

However, in Xcode 12, or if you open previous Xcode projects in Xcode 13,
you’ll be capable of writing in XML code in Info property list file.

<plist version="1.0">
<dict>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arkit</string>
<string>armv7</string>
<string>iphone-ipad-minimum-performance-a12</string>
</array>

<key>NSCameraUsageDescription</key>
<string>Your AR camera is needed</string>
</dict>
</plist>

Supported devices

The table below shows the list of iPhones supporting ARKit 5.0 for iOS 15.

|-----------------|--------------|--------------|--------------|
| Model | Chip | Process, nm | Tera Ops/sec |
|-----------------|--------------|--------------|--------------|
| iPhone 6s | A9 | 16 | 0.250 |
|-----------------|--------------|--------------|--------------|
| iPhone SE.1 | A9 | 16 | 0.250 |
|-----------------|--------------|--------------|--------------|
| iPhone 7 | A10 | 16 | 0.365 |
|-----------------|--------------|--------------|--------------|
| iPhone 8 | A11 | 10 | 0.600 |
|-----------------|--------------|--------------|--------------|
| iPhone X | A11 | 10 | 0.600 |
|-----------------|--------------|--------------|--------------|
| iPhone Xr/Xs | A12 | 7 | 5.000 |
|-----------------|--------------|--------------|--------------|
| iPhone 11 | A13 | 7 | 5.500 |
|-----------------|--------------|--------------|--------------|
| iPhone SE.2 | A13 | 7 | 5.500 |
|-----------------|--------------|--------------|--------------|
| iPhone 12 | A14 | 5 | 11.000 |
|-----------------|--------------|--------------|--------------|
| iPhone 13 | A15 | 5 | 15.800 |
|-----------------|--------------|--------------|--------------|

That’s all for now.

If this post is useful for you, please press the Clap button and hold it.

¡Hasta la vista!

--

--