我目前使用MPNowPlayingInfoCenter我的应用程序,以显示它正在播放的歌曲,但我期待纳入HTTP实时流进我的应用程序,这将有任意数量的在后台发生的不同轨道。
有没有一种方法来设置nowPlayingInfo当应用程序在后台(一定的时间后调用函数?),即使应用在技术上并没有真正在后台运行?
还是有一种方法来设置使用我的服务器上的一个简单的通话将返回正确的信息,正在播放的信息 - 使用API调用返回一个字符串或图像?
我知道这是可能的,因为另外,Songza已经做了,但也许他们已经收到使用某些私有方法从苹果(如果多数民众赞成甚至一个事情可以做)权限。
如果您使用的是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到App播放音频