没有收到遥控事件

时间:2012-06-03 19:27:48

标签: objective-c ios ios5

我正在尝试使用锁定屏幕/现在为我的应用程序播放控件,但我没有收到任何事件。文档使它看起来非常直接,所以当我没有得到任何结果时我有点惊讶。我的应用程序需要接收远程控制事件,以便在设备上播放音频之外。我试着用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;
        }
    }
}

2 个答案:

答案 0 :(得分:3)

除了Jojas所提到的,你需要确保你有一个活跃的音频会话。看看[AVAudioSession setActive:withFlags:error:]。

答案 1 :(得分:1)

您是否已经确保您的应用程序在每个州设置ReceivingRemoteControlEvents都没问题?

您应该在AppDelegate中通过UIApplicationDelegate查找必要的协议。 您似乎需要在applicationWillResignActiveapplicationDidBecomeActive中实施。

但是,有关于App States and Multitasking的Apple文档。我认为它可以帮助您按照目的处理应用程序状态。

希望它可以帮到你!