我正在尝试使用AVPlayer流式传输远程mp3 .
我已经设置了音频会话,并将播放音频背景添加到我的info.plist文件中 .
我正在运行此代码:
self.timeObserver = [self->player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:nil usingBlock:^(CMTime time) {
[self updateControls];
}];
添加一个时间观察器,每秒调用updateControls .
事实是,当声音缓冲区很低时,播放器只是暂停,后台的代码停止,所以我必须再次在应用程序中手动按下播放 . (如果我暂停播放器,此代码也不会运行)
我做错了吗?如何在后台运行一段代码而不会中断?
2 回答
您无法无限期地在后台运行任意代码 . 您可以保持音频播放,但如果您不是最前面的应用程序,则不应期望更新UI . 当您的应用程序移回前台时,您可以更新UI .
只要您正确设置AVAudioSession并使其处于活动状态,并且设置了UIBackgroundModes,您就应该选择音频前端 .
见http://developer.apple.com/library/iOS/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Configuration/Configuration.html
你需要像这样包装背景代码: