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