gpt4 book ai didi

ios - 防止AVPlayerController劫持MPRemoteCommandCenter

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:20:37 32 4
gpt4 key购买 nike

我有一个带有两个独立播放器的 View Controller ,一个带有 AVAudioPlayer 的音频播放器和一个带有 AVPlayerViewController 的视频播放器。
加载 View 时,两个播放器都将使用它们的源进行初始化,但会保持暂停状态,直到用户与其中一个播放器进行交互。 the two players

我试图让这个应用程序能够在后台播放来自 AVAudioPlayer 的音频,所以我在应用程序的功能中设置了选项并且它正在运行,但我遇到了一些主要问题。

第一个问题是设置引起的

AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: .default)

这是背景音频所必需的,但它也可以让视频在后台播放,这不是我想要的。有什么办法可以防止这种情况发生吗?

然后我使用 MPRemoteCommandCenter 设置锁屏和控制中心的控件,指定当用户与控件交互时音频播放器应该启动或暂停。如果我只使用音频而不启动播放器并在控制中心、锁屏和应用内播放器之间移动,一切正常。

但是如果我开始使用 AVPlayerViewController 播放视频,暂停它,启动音频播放器并转到锁屏,命令将连接到视频,即使视频甚至没有播放。
在为控件运行的代码中,我没有提到视频播放器(我也尝试过完全删除代码,但没有成功)。

这是预期的行为吗?有什么方法可以禁用它吗?

长话短说
我有一个音频和一个视频播放器,只希望音频播放器能够在后台播放,但出于某种原因,来自 MPRemoteCommandCenter 的控件优先考虑视频播放器,我想更改/禁用此行为。

最佳答案

好吧,对于任何试图解决这个问题的人来说,经过一些摆弄之后,我发现 AVPlayerController 有一个属性 updatesNowPlayingInfoCenter 默认设置为 true
将其设置为 false 可以防止我遇到的大部分问题。

我一直遇到的一个问题是,当播放音频文件然后切换到视频时,关闭应用程序仍会显示播放器控件,并且数据来自音频和视频。
我通过在播放音频时将 AVAudioSession.sharedInstance().categoryambient 切换到 playback 并切换回 ambient< 来解决这个问题 播放视频时。

关于ios - 防止AVPlayerController劫持MPRemoteCommandCenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654679/

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