Objective c 不接收远程控制事件

Objective c 不接收远程控制事件,objective-c,ios,ios5,Objective C,Ios,Ios5,我正在尝试为我的应用程序使用锁屏/正在播放控件,但未收到任何事件。文档看起来很直接,所以当我没有得到任何结果时,我有点惊讶。除了在设备上播放音频外,我的应用程序还需要接收遥控事件。我试图通过让它打印一些NSLog确认来测试这一点。我是否需要使用文档中未提及的音频或媒体框架?我没有收到任何警告或错误,所以我认为这不应该有任何问题。。。任何关于远程控制事件未注册原因的见解都将不胜感激 以下是相关代码: - (void)viewDidAppear:(BOOL)animated{ [super

我正在尝试为我的应用程序使用锁屏/正在播放控件,但未收到任何事件。文档看起来很直接,所以当我没有得到任何结果时,我有点惊讶。除了在设备上播放音频外,我的应用程序还需要接收遥控事件。我试图通过让它打印一些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;
        }
    }
}

您是否已经确保要设置的应用程序的每个状态都正常
接收RemoteControlEvents

您应该在AppDelegate中查找必要的协议via。 似乎需要在
application中实现willresignactive
applicationdidebecomeactive

然而,苹果公司的文件中有关于。我认为它将帮助您按照自己的目的处理应用程序状态


希望它能帮助你

您是否已经确保应用程序的每个设置状态都正常

您应该在AppDelegate中查找必要的协议via。 似乎需要在
application中实现willresignactive
applicationdidebecomeactive

然而,苹果公司的文件中有关于。我认为它将帮助您按照自己的目的处理应用程序状态


希望它能帮助你

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

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

Hmm ok。我想知道是否缺少音频会话是问题的一部分。这就是问题所在。我的应用程序本身不播放音频,而是与另一台播放音频的设备进行通信。我添加了音频会话,但只有当应用程序是最后一个播放音频时,它才会接收远程事件。我将发布一个关于如何解决这个问题的新问题,但我想感谢你们@斯鲁奇,你最后是不是又问了一个问题?@Moshe-我问了。但从来没有得到答案!该功能对于项目来说并不重要,因此最终没有得到实现。在这个时候,我没有一个干净的解决方案。问题是:嗯,好的。我想知道是否缺少音频会话是问题的一部分。这就是问题所在。我的应用程序本身不播放音频,而是与另一台播放音频的设备进行通信。我添加了音频会话,但只有当应用程序是最后一个播放音频时,它才会接收远程事件。我将发布一个关于如何解决这个问题的新问题,但我想感谢你们@斯鲁奇,你最后是不是又问了一个问题?@Moshe-我问了。但从来没有得到答案!该功能对于项目来说并不重要,因此最终没有得到实现。在这个时候,我没有一个干净的解决方案。问题是:我相信你是对的。发布的代码都在我的视图控制器中,我没有在委托中设置这些活动状态方法。我将尝试您的建议并向您汇报。事实证明,这些方法是由默认的AppDelegate实现的。问题是我没有音频会话。谢谢你的帮助。您链接的文档在试图准确理解正在发生的事情时帮助很大。我很高兴能帮助您。请随便问,我相信你是对的。发布的代码都在我的视图控制器中,我没有在委托中设置这些活动状态方法。我将尝试您的建议并向您汇报。事实证明,这些方法是由默认的AppDelegate实现的。问题是我没有音频会话。谢谢你的帮助。您链接的文档在试图准确理解正在发生的事情时帮助很大。我很高兴能帮助您。请随便问。