When I try to build a demo app for exploring PIP Swap feature using custom player view controller, I'm facing an issue that play and pause not working on the PIP window playback. But when I use AVPlayerViewController. I can pause and play the PIP window playback.
Here is the sample code attached.
var nowPlayingSession: MPNowPlayingSession?
var player: AVPlayer? {
didSet {
playerLayer = AVPlayerLayer(player: player)
if player != nil {
nowPlayingSession = MPNowPlayingSession(players: [player!])
nowPlayingSession?.remoteCommandCenter.pauseCommand.addTarget(handler: { [weak self] event in
guard let self = self else { return .commandFailed }
self.pause()
return .success
})
nowPlayingSession?.remoteCommandCenter.playCommand.addTarget(handler: { [weak self] event in
guard let self = self else { return .commandFailed }
self.play()
return .success
})
nowPlayingSession?.remoteCommandCenter.togglePlayPauseCommand.addTarget(handler: { [weak self] event in
guard let self = self else { return .commandFailed }
self.togglePlayPause()
return .success
})
}
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
playerLayer?.frame = view.bounds
publishNowPlayingMetadata()
}
func publishNowPlayingMetadata() {
var nowPlayingInfo = [String: Any]()
nowPlayingInfo[MPMediaItemPropertyTitle] = "Unknown Content"
nowPlayingInfo[MPMediaItemPropertyPlaybackDuration] = 15.0
nowPlayingInfo[MPNowPlayingInfoPropertyDefaultPlaybackRate] = 1.0
nowPlayingInfo[MPMediaItemPropertyArtist] = "Unknown Artist"
nowPlayingInfo[MPMediaItemPropertyAlbumArtist] = "Unknown Album Artist"
nowPlayingInfo[MPMediaItemPropertyAlbumTitle] = "Unknown Album Title"
nowPlayingSession?.nowPlayingInfoCenter.nowPlayingInfo = nowPlayingInfo
nowPlayingSession?.becomeActiveIfPossible()
}
Ref: https://developer.apple.com/documentation/avkit/adopting_picture_in_picture_playback_in_tvos (The above changes are made on top of it. )
Please suggest for changes.