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 的示例进一步详细说明了这一点。
在 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 的示例进一步详细说明了这一点。