我将Spotify播放器添加到我的应用程序中,该应用程序也使用MPMusicPlayerController播放音乐。当从 Spotify 播放音乐并且屏幕被锁定时,当用户按下锁定屏幕上的这些按钮时,不会收到播放/暂停和 FFW/RWD 的远程控制事件。
如果音乐从 MPMusicPlayer 控制器播放,我能够接收基于以下代码的远程控制事件:
-(void) ViewDidLoad {
...
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
...
}
和
- (BOOL) canBecomeFirstResponder
{
return YES;
}
- (void) remoteControlReceivedWithEvent: (UIEvent*) event
{
// see [event subtype] for details
if (event.type == UIEventTypeRemoteControl) {
// We may be receiving an event from the lockscreen
switch (event.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
case UIEventSubtypeRemoteControlPlay:
case UIEventSubtypeRemoteControlPause:
// User pressed play or pause from lockscreen
[self playOrPauseMusic:nil];
break;
case UIEventSubtypeRemoteControlNextTrack:
// User pressed FFW from lockscreen
[self fastForwardMusic:nil];
break;
case UIEventSubtypeRemoteControlPreviousTrack:
// User pressed rewind from lockscreen
[self rewindMusic:nil];
break;
default:
break;
}
}
}
虽然iPod控件在应用程序进入后台时可见,但当我按下暂停时它们没有响应。相反,当我按下暂停键时,iPod控件会消失。当流媒体音频(如 Spotify 从锁定屏幕在后台播放)时,需要添加哪些功能才能检测播放/暂停和 FFW/RWD?
我相信我过去遇到过这种情况。 如果我没记错的话,我添加了
-(void)remoteControlReceivedWithEvent:(UIEvent *) event { ... }
以及
- (BOOL) canBecomeFirstResponder { return YES; }
到应用委托(这也是我的音频控制器所在的位置)。我遇到了UIView控制器在我想捕获UIEventTypeRemoteControl
通知期间未处于活动状态的问题。
试一试,看看是否有帮助。
经过进一步调查,我发现,如果我的应用程序进入后台并收到远程控制事件时包含以下代码,iPod 控件不会消失。
// Set up info center to display album artwork within ipod controls (needed for spotify)
MPMediaItemArtwork *ipodControlArtwork = [[MPMediaItemArtwork alloc]initWithImage:artworkImage];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = [NSDictionary dictionaryWithObjectsAndKeys:nowPlayingTitle, MPMediaItemPropertyTitle,
nowPlayingArtist, MPMediaItemPropertyArtist, ipodControlArtwork, MPMediaItemPropertyArtwork, [NSNumber numberWithDouble:0.0], MPNowPlayingInfoPropertyPlaybackRate, nil];