锁屏界面中的iPod控制器适用于自己的应用程序

4

如何在自己的应用程序中使用锁屏iPod控件?

我尝试了MPNowPlayingInfoCenter,但是如果我设置信息,它不会显示在任何地方;不在锁定屏幕上,也不在AppleTV上的Airplay。

我使用AVPlayer播放我的音频文件。

1个回答

12

请查看多媒体远程控制文档。

以下是在UIViewController子类中监听远程控制事件的方法。首先,使您的控制器参与响应者链,否则事件将转发给应用程序委托:

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

如果合适的话,告诉应用程序开始接收事件,并将您的控制器设置为第一响应者:

// maybe not the best place but it works as an example
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}
然后回复他们:
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {

    if (receivedEvent.type == UIEventTypeRemoteControl) {

        switch (receivedEvent.subtype) {

            case UIEventSubtypeRemoteControlTogglePlayPause:
                [self playOrStop: nil];
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                [self previousTrack: nil];
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                [self nextTrack: nil];
                break;

            default:
                break;
        }
    }
}

1
这里不太明显的是,viewDidAppear 应该在 viewController 中声明,而 remoteControlReceivedWithEvent 应该在 app delegate 中声明。 - unsynchronized
这并非必须的,但在我的先前示例中是正确的。我忘记从文档中传达一个微妙的点:UIViewController可以参与响应者链,但只有在重写-(BOOL)canBecomeFirstResponder以返回YES之后才能参与。请参见我的编辑。 - Ryder Mackay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接