我正在尝试让我的应用在后台播放声音。我在viewDidLoad()中运行此代码:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
print("AVAudioSession Category Playback set")
do {
try AVAudioSession.sharedInstance().setActive(true)
print("AVAudioSession has been set Active")
} catch let error as NSError {
print(error.localizedDescription)
}
} catch let error as NSError {
print(error.localizedDescription)
}
运行良好并设置为活动状态。在模拟器中运行时,我可以返回主屏幕并继续播放声音,但是当我在设备上运行声音时,声音将无法在应用程序外播放。
声音每隔x秒通过AVAudioPlayer播放。
注意:我在设备功能中启用了后台模式,并选中了“音频,Airplay和画中画”框。
答案 0 :(得分:0)
如果您在任何时候停止播放声音,iOS可能不允许应用在后台重新开始播放声音。
答案 1 :(得分:0)
要返回您的应用并让声音继续播放,您必须将代码添加到viewWillAppear()
。当您重新打开应用时,viewDidLoad()
将不会被呼叫{。}}。
答案 2 :(得分:-1)
您需要在plist文件中进行一些更改。
即。 1)将所需背景模式设置为App播放音频
2)设置应用程序不在后台运行到NO。
NSError *setCategoryErr = nil;
NSError *activationErr = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr];
[[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
然后,您需要在AppDelegate中编写这么多代码
现在,您可以在手机屏幕锁定或进入后台时轻松运行音频。