Remote commands are not working on tvOS PIP screen when using custom player.

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.

Remote commands are not working on tvOS PIP screen when using custom player.
 
 
Q