gpt4 book ai didi

ios - 在后台快速播放音频播放列表

转载 作者:行者123 更新时间:2023-11-28 15:21:06 24 4
gpt4 key购买 nike

我有一个正在开发的音频应用程序,可以在前台和后台(锁定屏幕)播放一系列音频文件。我在后台播放音频播放列表时遇到问题。

下面是一个函数,我循环播放播放列表中的一个音频文件。我的 cellForItem 似乎每次都有问题。如果我不打开它,我会得到一个 fatal error 。如果我将它放在 if let 语句中,则在播放下一首歌曲时,代码不会在下一次重复时运行它。我从不丢失 indexPath,所以它应该可以正常工作。我想不通。

func playCellAudioInBackground(indexPath: IndexPath)  {
if let item = cv.cellForItem(at: indexPath) as? CollectionViewCell {

let when = DispatchTime.now() + 3 // change 2 to desired number of seconds
DispatchQueue.main.asyncAfter(deadline: when) {

UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: ({
self.gradient.removeFromSuperlayer()
item.superview?.bringSubview(toFront: item)
self.view.setNeedsLayout()
self.view.layoutIfNeeded()

}), completion: { (finished: Bool) in
let audioURL = self.streams[indexPath.item][“audioURL"] as? String
let isLive = self.streams[indexPath.item]["isLive"] as? Bool
self.audioStreamSelected(audioUrl: audioURL!, live:isLive!) { (success) -> Void in
DispatchQueue.main.async {
self.audioPlay()
}
}
})
}
}
}

最佳答案

两件重要的事情:

  1. 您不应在主线程中播放或流式传输音频。使用此线程进行短期操作,但主要用于 UI 更新。

  2. 您必须运行后台任务,以便在应用程序从前台转到后台时继续播放音频。

查看 this简洁的教程,他们会在其中精确地教您有关背景模式以及如何在后台播放音频的信息。

希望对您有所帮助!

关于ios - 在后台快速播放音频播放列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com