Is it possible not to use handtracking and not to request hand-tracking authority?

The VisionOSLoader will start the hand subsystem immediately as your app starts, which registers the VisionOSHandProvider on VisionOSSessionSubsystem as a required provider. As soon as the session starts, it will request hand tracking authorization. So the answer to “where is the code that requests authorization?” is VisionOSSessionSubsystem.

For Virtual Reality apps, the session is required for head tracking, which essentially means the session is required at app start (you never want to render without head tracking), thus you will be prompted immediately for hand tracking authorization.

For a Mixed Reality app, you don’t need an ARSession in your start-up scene, and you can elect to enable it later on after the app starts up, or when you transition into Unbounded mode (and thus have an ImmersiveSpace open). All of this is to say–you may not need to prompt the user immediately on app start, but you will need to prompt them eventually when starting an ARKit session, even if you do not plan to use hand tracking. if you don’t include this usage description, you will not be able to start the session because the required hand data provider will not be authorized.

If you do not plan to use ARKit features at all in your app, you can disable the Apple visionOS loader in Project Settings > XR Plug-in Management, which will disable the project validation errors and the error you see here. In that configuration, it is totally fine to build your app without these usage descriptions set.

We understand that this is inconvenient, and we’re working on adding a setting to allow you to opt out of automatically starting the hand subsystem in the loader. That will allow apps to enable ARKit without requiring hand tracking authorization.

1 Like