• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 防止 AVPlayerController 劫持 MPRemoteCommandCenter

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:19:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

我正在尝试让这个应用程序能够在后台播放来自 AVAudioPlayer 的音频,所以我已经在应用程序的功能中设置了选项并且它正在工作,但我遇到了一些重大问题。

第一个问题是设置引起的

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

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

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

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

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

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



Best Answer-推荐答案


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

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap