我在Info.plist中添加了UIBackgroundModes
属性,以使数组条目为“audio
”并添加了设置音频会话的调用:[session setCategory: AVAudioSessionCategoryPlayback error: &error];
。
然而,我唯一的测试设备是iPod Touch 2G,它不支持多任务处理。我尝试过模拟器但是当我切换到Safari时音乐停止播放。但当我切换回我的应用程序时,歌曲继续播放到比离开应用程序时更远的位置。
它似乎继续在后台播放但我在使用其他应用程序(Safari)时没有听到我的应用程序的音频。
答案 0 :(得分:18)
我也有同样的问题。在模拟器中,音频暂停,当您重新启动时,它会恢复播放。但是在设备上测试它完美运行并且音频继续在后台播放。我使用的示例代码是
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioPlayer play];
答案 1 :(得分:16)
iPhone模拟器不支持背景音频。 资料来源:WWDC 2010,第109节 - 采用多任务处理第2部分。
答案 2 :(得分:2)
你是否在info.plist中添加了必需的背景模式键... 如果没有尝试添加此... 转到info.plist文件并单击添加,添加“必需的背景模式”,点击一个小三角形,你将获得item0,添加“App播放音频”... 这很好用......
〜Raviraja
答案 3 :(得分:1)
这对我来说甚至可以在设备上使用。
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioPlayer play];
这个并设置info.plist键以启用背景音频是在iPhone应用程序中启用背景音频所需的。但是,如果您希望播放一系列音频文件,则需要将每个播放操作作为后台任务执行,如下所示:
UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:nil];
执行必要的操作:
[[UIApplication sharedApplication] endBackgroundTask:bgTask];