Iphone 在后台启动AVQueuePlayer

Iphone 在后台启动AVQueuePlayer,iphone,core-audio,avaudioplayer,avaudiosession,Iphone,Core Audio,Avaudioplayer,Avaudiosession,我有一个AVQueuePlayer,可以播放来自互联网的音频文件。它可以在后台执行应用程序,并且可以很好地执行(在后台播放并在后台异步获取新文件) 在将应用程序移动到后台之前,我允许AVQueuePlayer开始播放,一切都很好。为了开始播放,我的应用程序必须先与几个服务进行对话,然后才能真正播放正确的文件 如果我在播放开始前的几秒钟将应用程序移到后台,那么AVQueuePlayer将无法播放 为了能够在后台与服务对话,我总是首先通过beginBackgroundTaskWithExpirati

我有一个AVQueuePlayer,可以播放来自互联网的音频文件。它可以在后台执行应用程序,并且可以很好地执行(在后台播放并在后台异步获取新文件)

在将应用程序移动到后台之前,我允许AVQueuePlayer开始播放,一切都很好。为了开始播放,我的应用程序必须先与几个服务进行对话,然后才能真正播放正确的文件

如果我在播放开始前的几秒钟将应用程序移到后台,那么AVQueuePlayer将无法播放

为了能够在后台与服务对话,我总是首先通过beginBackgroundTaskWithExpirationHandler请求后台任务权限

通过查看日志,我可以看到所有服务都正常完成(因此后台任务权限有效),并且AVQueuePlayer已使用多个AVPlayerItems正确初始化,但它不会开始播放。AVQueuePlayer.currentItem.status也永远无法访问AVPlayerStatusReadyToPlay

我确保与AVQueuePlayer的所有交互都发生在主线程上

我被难倒了,如果应用程序在后台,无论我的设置和我是否拥有后台任务权限,AVQueuePlayer都不会启动


我以前也可以用音频队列服务做类似的事情,但我希望这次AVQueuePlayer及其更简单的API就足够了,但看来我必须回到音频队列服务和公司。

你必须在应用程序仍在前台时启动音频队列。如有必要,请保持沉默。看起来,如果应用程序进入后台时没有生成音频,那么默认情况下,它的音频会话将被删除并提供给新的前台应用程序。因此,进入后台的应用程序没有可以播放任何内容的会话