MPNowPlayingInfoCenter 遥控器在 iOS 10 中响应不正确

MPNowPlayingInfoCenter remote controls respond incorrectly in iOS 10

iOS 10 中,控制中心 UI 进行了重做,从那时起,play/pause 控制按钮响应不同。

无法暂停的内容不应在每次点击时更改控制中心中的play/pause按钮。

iOS 10 之前,它可能正在检查 MPNowPlayingInfoPropertyPlaybackRate 如果内容没有暂停,它不会更改遥控器。在 iOS 10 中,它每次都会立即更改,忽略 MPNowPlayingInfoPropertyPlaybackRate

UIEvent 处理远程控制事件的委托方式不再推荐用于 audio/video 事件处理。相反,MPRemoteCommandCenter 提供了一个基于选择器的界面来启用和禁用按钮和远程控制事件,以及处理这些事件的操作。

在不应暂停或恢复内容的情况下,您必须将每个命令的 enabled 属性 显式设置为 NO AND 提供一个操作,即使它只是一个什么都不做的虚拟选择器,以便正确禁用控制中心中的按钮:

MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

commandCenter.playCommand.enabled = NO;
[commandCenter.playCommand addTarget:self action:@selector(playAudio)];

commandCenter.pauseCommand.enabled = NO;
[commandCenter.pauseCommand addTarget:self action:@selector(pauseAudio)];

我通过使用 AVPlayer here 的示例进一步详细说明了这一点。