9

我需要在前台处理耳机播放/暂停按钮事件。我如何能够使用下面的代码在后台处理相同的场景

if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];
    [self becomeFirstResponder];
    NSLog(@"Responds!");
}

如果可能,请提供解释或示例代码。我做了很多研究,但没有任何帮助。

4

3 回答 3

13

还有另一种方法可以通过耳机实现播放器控制。使用MPRemoteCommandCenter工具播放暂停命令。 苹果文档

[[MPRemoteCommandCenter sharedCommandCenter].togglePlayPauseCommand addTarget:self action:@selector(onTooglePlayPause)];
于 2015-07-27T09:37:31.870 回答
12

您必须检查以下标准:

  1. 编辑您的 info.plist 以规定您在后台和前台执行音频 (UIBackgroundModes)。
  2. 实现这个功能:

    - (void)remoteControlReceivedWithEvent:(UIEvent *)theEvent 
    {
      if (theEvent.type == UIEventTypeRemoteControl)
      {
        switch(theEvent.subtype) {
        case UIEventSubtypeRemoteControlTogglePlayPause:
                //Insert code
                break;
            case UIEventSubtypeRemoteControlPlay:
                //Insert code
                break;
            case UIEventSubtypeRemoteControlPause:
                // Insert code
                break;
            case UIEventSubtypeRemoteControlStop:
                //Insert code.
                break;
            default:
                return;
        }
      }
    }
    

...显然,用您的应用程序中相关的任何功能替换“//插入代码”。

3>最后,为了调用上述函数,将其插入到您的 viewDidAppear 事件中:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    if ([self canBecomeFirstResponder]) {
        [self becomeFirstResponder];
    }

另请参阅此链接: http: //www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/

于 2013-03-15T05:22:22.967 回答
4

slobodans 解决方案的 swift 2 版本:

MPRemoteCommandCenter.sharedCommandCenter().togglePlayPauseCommand.addTarget(self, action: #selector(togglePlayStop(_:)));
于 2016-06-17T07:04:20.927 回答