AudioPlaybackController stop playing when .plain window is closed

Suppose there was an immersiveSpace, and an Entity() being added to the space as child entity of the content. This entity is responsible for playing background music by calling prepareAudio, gaining a controller and play the music. (check the basic code below)

When it was playing music, a .plain window and an immersiveSpace are both presented. I believe this immersiveSpace is holding the handle of the controller so as long as immersiveSpace is open, the music won't stop.

However if I close the .plain window (by closing system-level close button), the music just stopped. But the immersiveSpace is still open. If right now I check the value of controller.isPlaying, it was still true. But you just cannot hear the music anymore.

To reproduce, simply open an visionOS template App project, selecting volume and full immersive, and replace some code inImmersiveView.swift with the code below. Also simply drag any .mp3 file and replace the AudioFileResource's name. And you could reproduce this bug.

RealityView { content in
            // Add the initial RealityKit content
            if let immersiveContentEntity = try? await Entity(named: "Immersive", in: realityKitContentBundle) {
                content.add(immersiveContentEntity)

                // Put skybox here.  See example in World project available at
                // https://developer.apple.com/
                if let audioResource = try? await AudioFileResource(named: "anyMP3file.mp3") {
                    let ent = Entity()
                    immersiveContentEntity.addChild(ent)
                    let controller = ent.prepareAudio(audioResource)
                    controller.play()
                }
            }
        }

I wonder why this happen? I mean how should I keep the music playing when I close the .plain window?

Thanks!

Hi @milanowth ,

This is a known issue. It would be very helpful if you create a bug report at https://feedbackassistant.apple.com and paste the FB number in here so I can make sure it's seen by the right engineers.

Right now, I don't have a workaround other than starting in an immersive space directly or not closing the window for the time being.

Thanks so much for bringing this to attention!

AudioPlaybackController stop playing when .plain window is closed
 
 
Q