iOS Swift - MPCommandCenter& NowPlayingInfoCenter控制锁定屏幕上的音乐

时间:2016-11-15 19:13:49

标签: ios swift mpmusicplayercontroller

我正在创建一个使用MPMediaItems和MPMediaPlayerController的音乐播放器(In Swift 3)。我不能为我的生活弄清楚如何从锁定屏幕或通知中心控制音乐...

我已经阅读了我在MPRemoteCommandCenter和MPNowPlayingInfoCenter上找到的所有文章,我无法让它发挥作用。

我启用了背景音乐播放,目前音乐继续在应用外播放,但没有收到远程命令。

以下是当前使用的代码

在我的视图中加载我调用以下函数

let player = MPMusicPlayerController.applicationMusicPlayer()
let commandCenter = MPRemoteCommandCenter.shared()

func configureCommandCenter() {
    print("Enter configuration")
    self.commandCenter.playCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
        guard let sself = self else { return .commandFailed }
        print("Play")
        sself.player.play()
        self?.getNowPlayingItem()
        return .success
    }

    self.commandCenter.pauseCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
        guard let sself = self else { return .commandFailed }
        print("Pause")
        sself.player.pause()
        self?.getNowPlayingItem()
        return .success
    }

    self.commandCenter.nextTrackCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
        guard let sself = self else { return .commandFailed }
        print("next")
        sself.player.skipToNextItem()
        self?.getNowPlayingItem()
        return .success
    }

    self.commandCenter.previousTrackCommand.addTarget { [weak self] event -> MPRemoteCommandHandlerStatus in
        guard let sself = self else { return .commandFailed }
        print("Prev")
        sself.player.skipToPreviousItem()
        self?.getNowPlayingItem()
        return .success
    }

}

重申我的项目编译得很好,播放媒体,在应用程序未对焦时以及手机被锁定时继续播放媒体,但是在应用程序中没有看到任何命令,导致应用程序无法通过锁定屏幕或通知中心。任何帮助将不胜感激。

我还想提一下,我已经查看了与RemoteCommands和InfoCenter相关的Apple API文档。

我是否遗漏了一些关键步骤,以便从应用程序中注册远程命令?

1 个答案:

答案 0 :(得分:2)

问题是你的播放器是MPMusicPlayerController.applicationMusicPlayer()。您无法将应用程序音乐播放器用作遥控目标。

如果你想要远程控制目标功能,你需要你的播放器就像AVAudioPlayer。