iOS:在后台更新媒体信息

目前我正在使用MPNowPlayingInfoCenter为我的应用程序显示哪首歌正在播放,但是我正在考虑将HTTP Live Streaming合并到我的应用程序中,后者将在后台出现任意数量的不同音轨。

有没有办法在应用程序在后台时设置nowPlayingInfo(在一段时间之后调用函数?),即使应用程序在技术上实际上并不在后台运行?

还是有一种方法来设置正在播放的信息,使用我的服务器上的简单调用,将返回正确的信息 – 使用返回string或图像的API调用?

我知道这是可能的,因为松扎已经做到了,但也许他们已经获得了使用苹果某些私人方法的许可(如果那是你所能做的事)。

如果您使用的是AVPlayer类,并且您的应用程序的主要用途是播放音乐,那么您可以在后台运行它,从而在轨道更改时更新nowPlayingInfo

只是一个简单的例子:

 - (void)viewDidLoad { [super viewDidLoad] [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive: YES error: nil]; if ([[UIApplication sharedApplication] respondsToSelector:@selector(beginReceivingRemoteControlEvents)]){ [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; [self becomeFirstResponder]; //These two steps are important if you want the user to be able to change tracks with remote controls (you'll have to handle the remote control events yourself). } self.yourPlayer = [[AVPlayer alloc] init]; } 

在您的dealloc方法中取消注册远程控制事件:

 [[UIApplication sharedApplication] endReceivingRemoteControlEvents] 

Info.plist中 所需的背景模式更改为应用程序播放audio