iOS – 未收到UIEventTypeRemoteControl事件

我有这个在AppDelegate(didFinishLaunching):

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

我试图在相关的视图控制器中处理这些事件,但是这是有缺陷的(一些视图控制器会得到事件,而其他视图控制器不会,即使他们是第一响应者)。 我试过UIApplication的子类。 这没有用。 现在我正在尝试子类UIWindow并执行此操作(请参阅注释):

 - (void)sendEvent:(UIEvent *)event { if (event.type == UIEventTypeRemoteControl) { NSLog(@"I wish this happened"); //this never happens } else { NSLog(@"some other event"); //this does happen on any other interaction [super sendEvent:event]; } } - (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent { if (receivedEvent.type == UIEventTypeRemoteControl) { NSLog(@"got remote event"); // this never happens either switch (receivedEvent.subtype) { case UIEventSubtypeRemoteControlTogglePlayPause: { NSLog(@"handle play/pause"); break; } default: break; } } } 

我已经在信息列表中尝试了这两种方法:

 <key>UIBackgroundModes</key> <array> <string>audio</string> </array> 

没有什么区别。 正如Apple文档所述,您可以使用audio控件模拟远程控制事件(双击主页button并滚动到底部)。 当我按播放或暂停时,它只是从我的iTunes资料库播放audio。 我也尝试了苹果耳机上的button。 没有。

我想要做的就是检测遥控器上的播放/暂停button,并处理事件。 我还需要做些什么来抓住这些事件呢?

好吧,我的生活还有几个小时就进入了苹果的黑洞。 事实certificate,只有使用AVAudioPlayer播放某种audio或者播放了具有audio的video文件后,才能捕获远程控制事件。 这在这里没有任何记载。

所以在我的情况下,我必须首先播放一个虚拟的无声audio文件,然后才能捕获远程控制事件。 希望这可以帮助某个人。

(更新)请注意, 更新的文档现在声明如下:

要接收远程控制事件,您的应用程序必须做三件事:

  • 成为第一响应者。 呈现多媒体内容的视图或视图控制器必须是第一响应者。
  • 打开遥控事件的传送。 您的应用必须明确要求开始接收远程控制事件。
  • 开始播放audio。 您的应用程序必须是“正在播放”应用程序。 重申,即使您的应用程序是第一响应者,并且已经开启了事件传送,但您的应用程序在开始播放audio之前不会收到远程控制事件。