应用程序切换器中的音乐控件中不会显示应用程序图标

时间:2013-04-06 02:57:53

标签: ios objective-c avqueueplayer

我正在编写一个流式传输音乐的应用程序,我在音乐控制基座屏幕上设置图标时遇到了很多麻烦(当您双击主页按钮并向左滑动时)。所有文档都说要做这样的事情,但图标永远不会出现,我也从未收到过事件通知。所有这些代码都在我的播放器视图控制器中。 _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;
    }
}

编辑:我通读了documentation并按照步骤操作,但仍然无法正常工作。以下是我提出的一些可能原因:

一个。调用viewDidAppear时,我的音乐还没有播放。在文档中说明

  

“您的应用必须是”正在播放“应用。重申,即使您的应用是第一响应者>并且您已打开事件传递,您的应用也不会接收远程控制事件,直到>它开始播放音频。“

我在音乐开始播放后尝试拨打beginReceivingRemoteControlEvents:becomeFirstResponder:,但这也无效。这些只能在viewDidAppear:中调用吗? iOS会自动检测音乐何时开始播放,所以这不是必需的吗?

B中。使用AVQueuePlayer有点奇怪。我几乎肯定这不是它,因为事件消息是由视图控制器处理的,而不是播放器本身。

1 个答案:

答案 0 :(得分:2)

它可能不适合您,因为您在beginReceivingRemoteControlEvents而不是viewWillAppear中呼叫viewDidAppear。查看documentaion -

- (void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    // Turn on remote control event delivery

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}