VisionOS AvPlayer issue

I wanted to report an issue I've encountered with the latest Beta 6 update concerning the immersive space feature. Before this update, when I was in immersive space and clicked on a window button to play a video using AVPlayer, I had the option to keep other windows open and accessible within the environment. Could you please investigate this issue? It would be helpful to know if this is an intentional change or if there might be a bug affecting window management in immersive space.

Thank you for your attention to this matter. I look forward to your response.

Answered by Vision Pro Engineer in 800387022

Hey @Narek66,

This is the expected behavior on visionOS 2.0. You can specify your own docking region as detailed in Building an immersive media viewing experience:

In visionOS, AVPlayerViewController participates in the system docking behavior. When you play video in a full-window player then open an immersive experience, the system docks the video screen in a fixed location and presents streamlined playback controls that keep your focus on the content.

To opt out of this behavior you can play the video in the embedded state. AVPlayerViewController presents the player in full-screen mode when it is the exclusive root view of your app. By accessing the experienceController you can control these changes yourself. In your case you may choose to disable to full screen (expanded) experience, or manually transition the videos to the embedded experience before entering an immersive space:

controller.experienceController.allowedExperiences = .recommended(excluding: [.expanded])


If there are additional APIs you'd like us to consider adding, please file an enhancement request using Feedback Assistant. Once you file the request, please post the FB number here. If you're not familiar with how to file enhancement requests, take a look at Bug Reporting: How and Why?

Let me know if you have additional questions,
Michael

Hey @Narek66,

This is the expected behavior on visionOS 2.0. You can specify your own docking region as detailed in Building an immersive media viewing experience:

In visionOS, AVPlayerViewController participates in the system docking behavior. When you play video in a full-window player then open an immersive experience, the system docks the video screen in a fixed location and presents streamlined playback controls that keep your focus on the content.

To opt out of this behavior you can play the video in the embedded state. AVPlayerViewController presents the player in full-screen mode when it is the exclusive root view of your app. By accessing the experienceController you can control these changes yourself. In your case you may choose to disable to full screen (expanded) experience, or manually transition the videos to the embedded experience before entering an immersive space:

controller.experienceController.allowedExperiences = .recommended(excluding: [.expanded])


If there are additional APIs you'd like us to consider adding, please file an enhancement request using Feedback Assistant. Once you file the request, please post the FB number here. If you're not familiar with how to file enhancement requests, take a look at Bug Reporting: How and Why?

Let me know if you have additional questions,
Michael

Build with Beta 4, 5 , 6, 16.1

Before

Hi Michael,

Thanks for the detailed explanation. I wanted to clarify that before the beta 3 update, we were able to use the dock_region such that when playing video in full screen, we could still interact with other window groups. However, with the beta 4, 5, and 6 updates, this functionality seems to have been restricted, and the option to view and interact with all window groups has become hidden.

Here’s a simplified example of our previous setup that allowed this interaction:

openWindow(id: "exampleView") WindowGroup("exampleView", id: "exampleView") { ExampleView(video: exampleView) } .defaultSize(width: 600, height: 600)

In the pre-beta 3 updates, this configuration allowed us to keep the video in full-screen mode while still interacting with other windows and content. However, in the latest betas, this interaction seems to be restricted.

We would like to restore this feature because it’s crucial for our application to simultaneously manage video playback and interact with other window groups. Specifically, we want to:

Keep video playback in full-screen mode using a docked region. Interact with other window groups that are still visible and usable.

The option to interact with other windows while the video is docked in full-screen seems to be unavailable while in space.

I understand that the suggested solution involves using the experienceController to manage full-screen modes. However, this does not address our need to interact with other window groups while playing video in a docked region.

Is there a way to re-enable this feature or achieve a similar result with the current visionOS API? Any guidance on how to adapt to this change or potential workarounds would be greatly appreciated.

If there's no direct solution available, we’ll consider filing an enhancement request. I’ll be sure to include the relevant details and feedback number as necessary.

Thanks for your help!

Best, Narek

Hey Apple Team,

Just checking in! My feedback must be as hidden as those windows in the latest VisionOS beta. Any chance you’ve seen it? A little sign would be fantastic—just to know I’m not floating in space here!

Thanks for your time! 😊

VisionOS AvPlayer issue
 
 
Q