我正在编写一个流式传输音乐的应用程序,并且在设置音乐控制停靠屏幕上的图标时遇到了很多麻烦(当您双击主页按钮并向左滑动时)。所有文档都说要做这样的事情,但图标永远不会出现,我也没有收到事件通知。所有这些代码都在我的播放器视图控制器中。_radioPlayer 是 AVQueuePlayer 的一个实例。我在这里做错了什么?
- (void)viewWillAppear:(BOOL)animated
{
UIApplication *application = [UIApplication sharedApplication];
if([application respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
[application beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[_radioPlayer pause];
break;
case UIEventSubtypeRemoteControlPlay:
[_radioPlayer play];
break;
case UIEventSubtypeRemoteControlPause:
[_radioPlayer pause];
break;
default:
break;
}
}
编辑:我通读了文档并按照步骤操作,但它仍然无法正常工作。以下是我想出的一些可能的原因:
A. 调用 viewDidAppear 时我的音乐还没有播放。在文档中它指出
“您的应用程序必须是“正在播放”应用程序。重申,即使您的应用程序是第一响应者>并且您已打开事件传递,您的应用程序在开始播放音频之前不会接收远程控制事件。”
我试着打电话beginReceivingRemoteControlEvents:
,becomeFirstResponder:
在音乐开始播放后,但这也不起作用。只能调用这些viewDidAppear:
吗?iOS 是否会自动检测音乐何时开始播放所以这不是必需的?
B. 使用 AVQueuePlayer 有点奇怪。我几乎可以肯定这不是因为事件消息是由视图控制器处理的,而不是播放器本身。