我正在尝试使用锁定屏幕/现在为我的应用程序播放控件,但我没有收到任何事件。文档使它看起来非常直接,所以当我没有得到任何结果时我有点惊讶。我的应用程序需要接收远程控制事件,以便在设备上播放音频之外。我试着用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;
}
}
}
答案 0 :(得分:3)
除了Jojas所提到的,你需要确保你有一个活跃的音频会话。看看[AVAudioSession setActive:withFlags:error:]。
答案 1 :(得分:1)
您是否已经确保您的应用程序在每个州设置ReceivingRemoteControlEvents
都没问题?
您应该在AppDelegate中通过UIApplicationDelegate查找必要的协议。
您似乎需要在applicationWillResignActive
和applicationDidBecomeActive
中实施。
但是,有关于App States and Multitasking的Apple文档。我认为它可以帮助您按照目的处理应用程序状态。
希望它可以帮到你!