2

我正在尝试为我的应用程序使用锁定屏幕/现在播放控件,但没有收到任何事件。文档使它看起来非常简单,所以当我没有得到任何结果时我有点惊讶。我的应用需要接收远程控制事件,以便在设备上播放音频之外的其他用途。我试图通过使用 NSLog 打印出一些确认来对此进行测试。我是否需要使用文档中未提及的音频或媒体框架?我没有收到任何警告或错误,所以我认为这不应该有任何问题...任何有关远程控制事件未注册原因的见解将不胜感激

以下是相关代码:

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    //Register for lock screen controls
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];

    //Unregister lock screen controls
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self resignFirstResponder];
}

- (BOOL)canBecomeFirstResponder{
    return YES;
}

//Lock screen controls
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{
    NSLog(@"RECEIVED");
    if (event.type == UIEventTypeRemoteControl) {

        switch (event.subtype) {

            case UIEventSubtypeRemoteControlTogglePlayPause:
                NSLog(@"RECEIVED");
                break;

            case UIEventSubtypeRemoteControlPreviousTrack:
                NSLog(@"RECEIVED");
                break;

            case UIEventSubtypeRemoteControlNextTrack:
                NSLog(@"RECEIVED");
                break;

            default:
                break;
        }
    }
}
4

2 回答 2

3

除了 Jojas 提到的内容之外,您还需要确保您有一个活跃的音频会话。查看 [AVAudioSession setActive:withFlags:error:]。

于 2012-06-03T21:50:14.703 回答
1

您是否已经确保您的应用程序设置的每个状态ReceivingRemoteControlEvents都很好?

您应该通过AppDelegate 中的UIApplicationDelegate寻找必要的协议。看来您需要在applicationWillResignActiveand中实现applicationDidBecomeActive

但是,Apple 有关于App States and Multitasking的文档。我认为它将帮助您根据自己的目的处理应用程序状态。

希望对你有帮助!

于 2012-06-03T19:57:31.073 回答