当应用程序在背景AVAudioSession中时如何播放自定义声音?

时间:2020-06-27 00:23:35

标签: ios swift avaudiosession

我的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)
            }
        
    }

我希望有人能指出这个问题。

0 个答案:

没有答案
相关问题