我的iOS应用收到通知,以从我们的主要服务刷新其状态。现在,我们正在获取最新状态,并在有更新数据时播放连续声音。我们的设备被锁定为引导模式,以阻止其关闭。
我们正在进行更改,以使设备在闲置xx分钟后可以进入睡眠状态。但是,我们注意到,当应用程序在后台运行时,声音不会播放,并且似乎总是在AVAudioSession.sharedInstance().setActive(true)
上失败。有趣的是,如果放置断点并通过调试器运行它,则可以正常工作,但在正常运行时,它将失败并显示以下错误:
Error Domain=NSOSStatusErrorDomain Code=561015905
我们在后台模式下的功能下启用了“音频,AirPlay和PnP”。这是播放声音的代码:
func playSound(shouldPlay: Bool) {
guard let url = Bundle.main.url(forResource: "sms_alert_circles", withExtension: "caf") else { return }
let audioSession = AVAudioSession.sharedInstance()
do {
try self.audioSession.setCategory(.playback, mode: .default, options: .mixWithOthers)
try self.audioSession.setActive(true)
/* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
self.player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.caf.rawValue)
guard let player = self.player else { return }
if shouldPlay == true {
player.volume = 1.0
player.numberOfLoops = 1
player.play()
} else {
player.stop()
try self.audioSession.setActive(false)
}
} catch let error {
print("Error playing sounds")
print(error.localizedDescription)
}
}
我希望有人能指出这个问题。