AVPlayer 在后台停止
AVPlayer stops on background
我正在使用 AVPlayer 播放来自 URL 的音频。一切都按预期工作,直到应用程序进入后台或 iphone 进入睡眠模式。
我怎样才能防止这种情况发生。
我已经添加到 info.plist:
这是我的代码。
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()
我认为您忘记将 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 的更多信息,请参见 here。
我正在使用 AVPlayer 播放来自 URL 的音频。一切都按预期工作,直到应用程序进入后台或 iphone 进入睡眠模式。
我怎样才能防止这种情况发生。
我已经添加到 info.plist:
这是我的代码。
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()
我认为您忘记将 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 的更多信息,请参见 here。