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



我正在编写一个流媒体音乐应用程序,我在设置音乐控制dock屏幕上的图标时遇到了很多麻烦(当你双击home键并向左滑动时)。所有的文档都说要做这样的事情,但图标从来没有出现,我从来没有收到事件通知。所有这些代码都在我的播放器视图控制器中。_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;
    }
}

编辑:我通读了文档并遵循了步骤,但它仍然不起作用。以下是我想到的一些可能的原因:

。当viewDidAppear被调用时,我的音乐还没有播放。在文档中它声明

"你的应用程序必须是"正在播放"应用程序。重申,即使你的应用程序是第一响应者>,你已经打开了事件传递,你的应用程序不会接收远程控制事件,直到>它开始播放音频。"

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

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

它可能不为您工作,因为您在viewWillAppear而不是viewDidAppear中调用beginReceivingRemoteControlEvents。查看文档-

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // Turn on remote control event delivery
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}

相关内容

最新更新