gpt4 book ai didi

iphone - 在后台启动 AVQueuePlayer

转载 作者:行者123 更新时间:2023-12-03 21:03:45 26 4
gpt4 key购买 nike

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

当我允许 AVQueuePlayer 在将应用程序移动到后台之前开始播放时,一切都很好。为了开始播放,我的应用程序必须与几个服务通信,然后才能真正获得要播放的正确文件。

如果我在播放开始前的关键几秒钟内将应用程序移动到后台,那么 AVQueuePlayer 将不会播放。

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

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

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

我很困惑,如果应用程序在后台,无论我的设置如何并且我有后台任务权限,AVQueuePlayer都不会启动。

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

最佳答案

您必须在应用程序仍处于前台时启动音频队列。如有必要,请保持沉默。看起来,如果应用程序在进入后台时不产生音频,则默认情况下,它的 Audio Session 将被取消并提供给新的前台应用程序。因此进入后台的应用程序没有可以播放任何内容的 session 。

关于iphone - 在后台启动 AVQueuePlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10337807/

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