【问题标题】:Not receiving remote control events未收到远程控制事件
【发布时间】:2012-06-03 19:27:47
【问题描述】:

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

【问题讨论】:

    标签: objective-c ios ios5


    【解决方案1】:

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

    【讨论】:

    • 嗯好的。我想知道缺少音频会话是否是问题的一部分。
    • 这就是问题所在。我的应用程序本身不播放音频,而是与另一台播放音频的设备进行通信。我添加了音频会话,但如果应用程序是最后一个播放音频的,它只会接收远程事件。我将发布一个关于如何解决这个问题的新问题,但我想谢谢你!
    • @Squatch,你最后是不是又发了一个问题?
    • @Moshe - 我做到了。虽然从来没有得到答案!该功能对项目来说并不重要,因此最终没有得到实施。目前,我没有干净的解决方案。这是问题:stackoverflow.com/q/10885047/1245406
    【解决方案2】:

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

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

    不过,有苹果关于App States and Multitasking的文档。我认为它会帮助您根据自己的目的处理应用程序状态。

    希望对你有帮助!

    【讨论】:

    • 我相信你是对的。发布的代码都在我的视图控制器中,我没有在我的委托中设置这些活动状态方法。我会尝试你的建议并报告。
    • 原来我已经通过默认的 AppDelegate 实现了这些方法。问题在于我缺少音频会话。不过谢谢你的帮助。在尝试准确了解发生的情况时,您链接的文档帮助很大。
    • 很高兴为您提供帮助。随时问。
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多