ios - AVplayer 不会在锁屏或后台播放来自 url 的音频

标签 ios swift avplayer nsurlsession

我有一个音乐应用程序,它从网址下载音频并在我的应用程序和背景中播放它,一切都很好。现在,我正在开发一项功能,让我的应用程序可以在当前歌曲播放完毕后播放下一首歌曲,并且我的应用程序可以完美运行,除非我的设备处于后台或锁屏状态。这是如何调用 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 中进行如下设置。 enter image description here

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/

相关文章:

ios - WKWebView 和 NSURLProtocol 不工作

swiftui - 控制 Apple Watch 的音量

ios - 检查AVPlayer缓冲和播放状态

ios - -[AFHTTPRequestSerializer requestWithMethod :URLString:parameters:error:] 中的断言失败

android - Google 的 Google Advertising ID(GAID) 和 Apple 的 IDFA 可以冲突吗?

swift - 12 小时格式时间字符串中的日期时间不正确 - Swift

ios - 使用 AVURLAssets 的 AVPlayer 和渐进式视频下载

iphone - startMonitoringForRegion 可以唤醒我的应用程序并开始 GPS 跟踪吗?

c# - Xamarin.iOS 链接器删除反射所需的类中的成员

ios - 为什么我不能在 UIImage 上绘图?