更新MPRemoteCommandCenter播放/暂停按钮

时间:2016-04-20 20:50:30

标签: ios cocoa-touch mpnowplayinginfocenter control-center

我有一个iOS 9应用程序,可以使用AudioGraph播放类似MIDI的歌曲。我已使用MPRemoteCommandCenter设置了远程控制命令,并使用MPNowPlayingInfoCenter设置了信息,以便当前正在播放的歌曲显示在控制中心中,并响应按下控制中心按钮或按下耳机按钮。点击控制中心中的暂停按钮会暂停我的歌曲,但控制中心的播放头会继续移动,按钮仍然是暂停图标。再次点击它只会让呼叫暂停。

有没有办法更新MPNowPlayingInfoCenterMPRemoteCommandCenter状态,以便控制中心知道该歌曲已暂停?

我尝试过的解决方案:

  • enabledplayCommand

    上设置pauseCommand

    无效

  • MPNowPlayingInfoPropertyPlaybackRate

    中将0设为MPNowPlayingInfoCenter

    停止播放头推进(并重置经过的时间,如果我也没有明确设置它),但该按钮仍然是暂停按钮

  • 停止我的音频引擎并致电AVAudioSession.setActive(false)

    这似乎有效,但它很慢,导致音频故障,我的应用程序的其他部分依赖音频引擎运行,即使歌曲暂停

1 个答案:

答案 0 :(得分:0)

似乎MPRemoteCommandCenter知道音频暂停的唯一方法是停止播放流媒体,因此您的问题的答案似乎是" no"。遗憾的是,我们无法直接控制控制中心的运输控制状态......

由于您的应用需要不断的音频流,看起来您最好的选择是放弃Control Center音频传输支持。也许中间立场是删除对播放和暂停的支持,同时保留当前播放音频的时间线(如上所述,您可以通过将MPNowPlayingInfoPropertyPlaybackRate设置为0来停止时间轴。)

在我的情况下,按下Control Center的暂停按钮后,只有在我停止流式传输音频时才显示控制中心播放按钮(在我的情况下,这意味着在我的AVAudioEngine实例上调用stop,并且没有必要在我的情况下,将我的AVAudioSession设置为非活动状态)。停止流媒体也会暂停控制中心的时间线,因此对于其他人来说,停止播放"停止播放"解决方案,您无需设置MPNowPlayingInfoPropertyPlaybackRate。