我正在使用以下代码播放来自互联网的网址声音:
var audioPlayer = AVPlayer()
...
let audioSession = AVAudioSession.sharedInstance()
audioSession.setCategory(AVAudioSessionCategoryAmbient, error: nil)
let url = trackFileName
let playerItem = AVPlayerItem( URL:NSURL( string:url ) )
audioPlayer = AVPlayer(playerItem:playerItem)
audioPlayer.rate = 1.0;
player.play()
我正在努力确保它继续在后台播放,这就是我使用“AVAudioSession.sharedInstance()”的原因。当我通过锁定屏幕在模拟器中尝试它时,它会继续像它应该的那样播放。但是如果我在一个设备上播放它,一旦屏幕自动看起来或者我自己锁定声音就会关闭声音。
我的代码中缺少什么?
答案 0 :(得分:5)
swift 2+解决方案:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
} catch _ {
return print("error")
}
答案 1 :(得分:1)
您使用了错误的类别,Gender
它的正常行为"您的音频通过屏幕锁定和静音开关来消音"。
请改用AVAudioSessionCategoryAmbient
。
答案 2 :(得分:1)
首先,你应该向你的plist添加背景模式,如下所示:
然后你应该使用AVAudioSessionCategoryPlayback会话。像这样:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSessionCategoryAmbient在后台不起作用。
答案 3 :(得分:0)
打开你的app info.plist作为源代码(在文本模式下编辑)并在dict之后添加以下内容:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>