2 years ago

#61244

test-img

Marko Ilic

How to prevent Google Cast app to be suspended while playing audio?

I am developing an iOS app in Swift that plays audio files on TV over Google Cast.

App uses two-way communication over TextChannel to exchange information with the receiver app.

The app is working as expected until I put the app into the background. After the app is backgrounded the Google Cast session gets disconnected.

To ensure app is not susspended in the background while playing audio I have in my AppDelegate this code snippet:

try session.setCategory(AVAudioSession.Category.playback,
                                mode: AVAudioSession.Mode.default,
                                options: [AVAudioSession.CategoryOptions.mixWithOthers, AVAudioSession.CategoryOptions.allowAirPlay])
        try session.setActive(true)

This is how I initialise the Google Cast:

let criteria = GCKDiscoveryCriteria(applicationID: kReceiverAppID)
    let options = GCKCastOptions(discoveryCriteria: criteria)
    options.suspendSessionsWhenBackgrounded = false
    GCKCastContext.setSharedInstanceWith(options)
    GCKCastContext.setSharedInstanceWith(options)

If I add a dummy AVPlayer to my ViewController and play a random mp3 file on the player while I play other audio files overcast connection to the Google Cast session remains connected and the app works as expected until mp3 stops playing on AVPlayer.

Here is my AVPlayer snippet:

let videoURL = URL(string: "https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_5MG.mp3")
        let player = AVPlayer(url: videoURL!)
        let playerLayer = AVPlayerLayer(player: player)
        playerLayer.frame = self.view.bounds
        self.view.layer.addSublayer(playerLayer)
        player.play()

Can anybody help me prevent the app from being suspended when it plays audio only while casting to TV?

Thanks!

ios

swift

google-cast

google-cast-sdk

0 Answers

Your Answer

Accepted video resources