AVPlayer在后台停止播放

7
我正在使用AVPlayer从URL播放音频。一切都很正常,直到应用程序进入后台或iPhone进入睡眠模式。
如何防止发生这种情况。
我已经在info.plist中添加了以下内容: enter image description here 以下是我的代码。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let playTrackID = tracks[indexPath.row].trackID

    let urlString = url
    let url = NSURL(string: urlString)!

    avPlayer = AVPlayer(URL:url)

    avPlayer.play()

}

有什么想法吗?

更新:已被@Danil Gontovnik解决。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let playTrackID = tracks[indexPath.row].trackID

    let urlString = url
    let url = NSURL(string: urlString)!

    do {

        avPlayer = AVPlayer(URL:url)

        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        try AVAudioSession.sharedInstance().setActive(true)

    }

    catch {

        print("Something bad happened. Try catching specific errors to narrow things down")
    }


    avPlayer.play()
1个回答

4

我认为您忘记将AVAudioSession设置为活动状态了。尝试添加以下代码:

var categoryError: NSError?
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: &categoryError)

if categoryError != nil {
    // Handle error
}

var activeError: NSError?;
AVAudioSession.sharedInstance().setActive(true, error: &activeError)

if activeError != nil {
    // Handle error
}

您可以在这里找到有关AVAudioSession的更多信息。


我尝试了,但是出现了一个错误:“在cal中有额外的参数错误”。 - user3163404
你具体是在哪一行得到的? - gontovnik
1
我正在使用Swift2,所以我必须添加do/try/catch实现。它运行得很好,非常感谢。 - user3163404
1
当我退出应用程序时,它仍然停止播放.. 有任何想法吗? - user3163404
你有Swift2的示例吗? - user3163404
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接