9

UIBackgroundModes在 Info.plist 中添加了属性以具有“”的数组条目,audio并添加了设置音频会话的调用:[session setCategory: AVAudioSessionCategoryPlayback error: &error];

但是,我唯一的测试设备是不支持多任务处理的 iPod Touch 2G。我试过模拟器,但是当我切换到 Safari 时音乐停止播放。但是当我切换回我的应用程序时,歌曲继续播放到比我离开应用程序时更远的位置。

它似乎在后台继续播放,但在使用另一个应用程序 (Safari) 时我没有听到我的应用程序的音频。

4

4 回答 4

18

我也有同样的问题。在模拟器中,音频暂停,当您重新启动它时,它会恢复播放。但是在设备上测试它运行良好,并且音频继续在后台播放。我使用的示例代码是

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioPlayer play];
于 2010-07-14T06:32:58.627 回答
16

iPhone 模拟器不支持背景音频。资料来源:WWDC 2010,第 109 场会议 - 采用多任务处理第 2 部分。

于 2010-09-02T13:31:35.857 回答
2

您是否在 info.plist 中添加了必需的后台模式键...如果没有尝试添加此...转到 info.plist 文件并单击添加,添加“必需的后台模式”单击一个小三角形,您将获得 item0在那添加“应用程序播放音频”...这很好用...

~拉维拉佳

于 2010-07-08T09:26:15.720 回答
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];
于 2010-07-18T11:12:13.770 回答