在我的音频播放器的视图控制器中,我添加了这个:
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
这会将播放器控件中的图标从iPod图标切换到我自己的应用程序,它还会将小回放图标放在状态栏中。
接下来,我将此添加到我的视图控制器以处理远程事件:
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
NSLog(@"REMOTE EVENT!");
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[streamer pause];
break;
case UIEventSubtypeRemoteControlPlay:
[streamer start];
break;
case UIEventSubtypeRemoteControlPause:
[streamer pause];
break;
case UIEventSubtypeRemoteControlStop:
[streamer stop];
break;
default:
break;
}
}
然而,这从未被调用过。我试着在应用程序运行时调出播放控件,我尝试回到主屏幕并点击一些播放控件,然后尝试了我的耳塞控件。一切都没有运气。
有没有人对我可能出错的地方有任何指示?
感谢。
答案 0 :(得分:5)
你已经实现了错误的方法:而不是 - (void)viewWillAppear:(BOOL)动画它应该是 - (void)viewDidAppear:(BOOL)动画。
答案 1 :(得分:1)
之前我遇到过这个问题并发现在我的问题中,这是因为我的视图是一个子视图,父母正在捕捉远程事件。我将从AppDelegate开始并实现该方法,看看是否有任何东西被发送到AppDelegate,然后从那里追踪它。有可能是一个视图或viewController捕获事件而不是传递它。
答案 2 :(得分:0)
您确定要设置音频会话吗?使用AVAudioSession并在成为第一响应者之前将类别设置为AVAudioSessionCategoryPlayback。