VisionOS Enterprise API Not Working

My development team admin requested the Enterprise API for camera access on the vision pro. We got that granted, got a license for usage, and got instructions for integrating it with next steps.

We did the following: Even when I try to download and run the sample project for "Accessing the Main Camera", and follow all the exact instructions mentioned here: https://developer.apple.com/documentation/visionos/accessing-the-main-camera

I am just unable to receive camera frames.

I added the capabilities, created a new provisioning profile with this access, added the entitlements to info.plist and entitlements, replaced the dummy license file with the one we were sent, and also have a matching bundle identifier and development certificate, but it is still not showing camera access for some reason.

"Main Camera Access" shows up in our Signing & Capabilities tab, and we also added the NSMainCameraDescription in the Info.plist and allow access while opening the app. None of this works. Not on my app, and not on the sample app that I just downloaded and tried to run on the Vision Pro after replacing the dummy license file.

Hi @vision_pro_developer2000

Thanks for bringing this to our attention. While I investigate, I'd appreciate it if you can do some or all of the following:

  • Delete the app, reinstall it, then run it and tell me if the app prompts you for permission to access the main camera.
  • Add some print statements to the app to isolate the point of failure. Tell me how far you get. Specifically, in CameraSessionManager.runCameraFrameProvider determine if the provider starts. In CameraSessionManager.observeCameraFrameUpdates determine if the code reaches leftCameraFeed.update.
  • File a bug report using Feedback Assistant, attach a sysdiagnose, and post the FB number here once you do. Bug Reporting: How and Why? has tips on creating your bug report.

Thank you for the response. I've completed all the requested debugging steps nothing worked. I think it is an issue on your system where the license has not been activated yet. Steps Completed:

  1. App reinstallation: I deleted the app, reinstalled it, and ran it. The app successfully prompts for and receives camera access permission.
  2. Debug print statements: I added print statements to track execution flow:

In CameraSessionManager.runCameraFrameProvider:

  • Camera authorization is GRANTED
  • Provider STARTS successfully
  • Provider state remains initialized (never transitions to running)

In CameraSessionManager.observeCameraFrameUpdates:

  • No camera formats available from CameraVideoFormat.supportedVideoFormats()
  • Code never reaches leftCameraFeed.update because no formats are returned

Current setup verified:

  • Enterprise entitlement com.apple.developer.arkit.main-camera-access.allow is present in provisioning profile
  • Enterprise.license file (can share ID via email if you require it) is embedded in app bundle under Copy Bundle Resources
  • Privacy usage descriptions (NSMainCameraUsageDescription, NSEnterpriseMCAMUsageDescription) are in [Info.plist]
  • App entitlements file contains com.apple.developer.arkit.main-camera-access.allow = true
  • Testing on physical Vision Pro device (not simulator)
  • Camera permission is granted at runtime

The issue: Despite all correct configuration, CameraFrameProvider remains in initialized state and supportedVideoFormats() returns 0 formats, so it seems like the enterprise license is not being recognized/activated by ARKit at runtime. Have also included all details about signing and capabilities showing in my project as included in the email I sent as well since that is personal info.

Hi @vision_pro_developer2000

I'm unable to reproduce the "no camera frames" issue when building the app with a valid Enterprise.license file. However, I can reproduce the issue when any of the following conditions occur.

Verify that none of these apply to your setup

  • Expired or outdated license: Ensure you're using the most recently issued Enterprise.license file, not an expired version.
  • Incorrect filename: The file must be named exactly Enterprise.license (case-sensitive, no variations).
  • License not properly replaced: The placeholder Enterprise.license must be completely replaced with your actual license file; copying and pasting the file's contents into the placeholder file will not work.
  • Team mismatch: Confirm you're building the app using the same Apple Developer team that the license was issued to.

Test your license setup

Add the snippet below to your app to confirm your app has main camera API access. Refer to this video for a detailed walkthrough.

// Add VisionEntitlementServices.framework to your app target (Target > General > Frameworks, Libraries and Embedded Content).
import VisionEntitlementServices

func logMainCameraAccess() {
    let license = EnterpriseLicenseDetails.shared

        // First, you might check the overall license status
        guard license.licenseStatus == .valid else {
            print("Enterprise license is not valid: \(license.licenseStatus)")
            // Optionally disable enterprise features or alert the user
            return
        }

        // Then, check for a specific entitlement before using the feature
        if license.isApproved(for: .mainCameraAccess) {
            // Safe to proceed with using the main camera API
            print("Main Camera Access approved. Enabling feature...")
            // ... enable camera functionality ...
        } else {
            // Feature not approved for this license
            print("Main Camera Access not approved.")
            // ... keep feature disabled, potentially inform user ...
        }
}

Troubleshooting

Delete then re-adding the license.

  • Delete the existing Enterprise.license from your project.
  • Drag and drop your actual license file into the project (don't copy contents).
  • Verify your selected development team in Xcode matches the license.

Let me know how it goes.

VisionOS Enterprise API Not Working
 
 
Q