我有一个音乐应用程序,它从网址下载音频并在我的应用程序和背景中播放它,一切都很好。现在,我正在开发一项功能,让我的应用程序可以在当前歌曲播放完毕后播放下一首歌曲,并且我的应用程序可以完美运行,除非我的设备处于后台或锁屏状态。这是如何调用 AVPlayer 来播放 url 中的音频。
guard let urlLink = googleDriveUrl else {return}
let urlReformatted = removePartOfGoogleDriveUrl(url: urlLink)
guard let url = URL(string: urlReformatted) else {return}
audioPlayer = AVPlayer(url: url)
audioPlayer?.play()
我不明白为什么我使用
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64,
检查允许后台提取的下载过程并使用相同的音频网址,发现我的应用程序即使在后台或锁屏状态下也确实下载了完整的文件,但 AVPlayer 无法播放。这很奇怪,因为我的应用程序内一切都运行良好。另外,如果我从后台返回应用程序并单击播放按钮,它会播放该文件。有什么建议吗?
最佳答案
在 Project->Select Targets->Capability 中进行如下设置。
var backgroundIdentifier = UIBackgroundTaskInvalid
func configureBackgroundAudioTask() {
backgroundIdentifier = UIApplication.shared.beginBackgroundTask (expirationHandler: { () -> Void in
UIApplication.shared.endBackgroundTask(self.backgroundIdentifier)
self.backgroundIdentifier = UIBackgroundTaskInvalid
})
}
关于ios - AVplayer 不会在锁屏或后台播放来自 url 的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48206024/