我在 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;
}
}
}
我在 info plist 中尝试了有和没有这个:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
没什么区别。正如 Apple 文档所述,您可以使用音频控件模拟远程控制事件(双击主页按钮并在底部滚动到它们)。当我按下播放或暂停时,它只会播放我的 iTunes 资料库中的音频。我也试过苹果耳机上的按钮。没有。
我要做的就是检测遥控器上的播放/暂停按钮,并处理事件。我还需要做什么来捕捉这些事件?