Пульт дистанционного управления не отображается на экране блокировки - PullRequest
0 голосов
/ 02 декабря 2018

Я создал класс для управления настройкой событий дистанционного управления.Все операторы print печатаются в теле функций, но события никогда не вызываются.Также метаданные никогда не отображаются ни на экране блокировки, ни в командном центре.Я вызываю UIApplication.shared.beginReceivingRemoteControlEvents()
в приложении-делегате didFinishLaunching.Может кто-нибудь объяснить, почему данные не отображаются и почему не работают элементы управления?Аудио сеанс также установлен на .playback

class RemoteControlsHelper {

    static let instance = RemoteControlsHelper()

    var currentPodcast = Podcast()
    var player = AVAudioPlayer()

    func setupRemoteTransportControls() {
        // Get the shared MPRemoteCommandCenter

        print("setting up commands")
        let commandCenter = MPRemoteCommandCenter.shared()

        commandCenter.playCommand.isEnabled = true
        commandCenter.pauseCommand.isEnabled = true

        // Add handler for Play Command
        commandCenter.playCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
            if self.player.rate == 0.0 {
                self.player.play()
                print("s")
                return .success
            }
            print("f")
            return .commandFailed
        }

        // Add handler for Pause Command
        commandCenter.pauseCommand.addTarget { (event) -> MPRemoteCommandHandlerStatus in
            if self.player.rate == 1.0 {
                self.player.pause()
                print("s")
                return .success
            }
            print("f")
            return .commandFailed
        }
    }

    func setupNowPlaying(img: UIImage?) {
        print("setting data")
        // Define Now Playing Info
        var nowPlayingInfo = [String : Any]()
        nowPlayingInfo[MPMediaItemPropertyTitle] = self.currentPodcast.title
        nowPlayingInfo[MPMediaItemPropertyArtist] = self.currentPodcast.author
        print(self.currentPodcast.title)

        if let image = img {
            nowPlayingInfo[MPMediaItemPropertyArtwork] =
                MPMediaItemArtwork(boundsSize: image.size) { size in
                    return image
            }
        }
        print("continuing")
        //nowPlayingInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = self.player.currentTime
        //nowPlayingInfo[MPMediaItemPropertyPlaybackDuration] = self.player.duration
        //nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = self.player.rate

        // Set the metadata
        MPNowPlayingInfoCenter.default().nowPlayingInfo = nowPlayingInfo
    }

    @objc func toggleAudio() {
        if self.player.isPlaying {
            self.player.pause()
        } else {
            self.player.play()
        }
    }
}
...