iOS MPMoviePlayerViewController 在屏幕锁定时停止播放

Posted

技术标签:

【中文标题】iOS MPMoviePlayerViewController 在屏幕锁定时停止播放【英文标题】:iOS MPMoviePlayerViewController stop playing when screen locks 【发布时间】:2014-01-23 07:11:40 【问题描述】:

我实现了 MPMoviePlayerViewController 来播放视频,我启用了 airPlay 并且效果很好,但问题是当 ipad 上的屏幕锁定时。我的问题是即使屏幕锁定,如何确保 MPMoviePlayerViewController 仍在 airPlay 中。你们中的任何人都知道我该如何完成这项工作吗?

【问题讨论】:

试试这个可能会起作用.. NSError *setCategoryError = nil; [[AVAudiosession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 错误:&setCategoryError]; 正如我在使用 MPMoviePlayerViewController 而不是 AVPlayer 之前提到的那样 【参考方案1】:

Apple 认为当用户看不到视频时,持续运行有什么好处?所以看不到的时候不需要播放视频。当应用程序进入后台或屏幕锁定时,Apple 会暂停它。如果您仍想播放它,您可以添加通知以在您进入后台和进入前台时开始和停止。

希望这会有所帮助。

【讨论】:

【参考方案2】:

在您的 Info.plist 文件中,添加键“必需的背景模式”,其值为“App 使用 AirPlay 播放音频或流式传输音频/视频”。

另外,当您收到通知 MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification 时,添加以下行:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];

并将这一行添加到您的 dealloc 方法中:

[[AVAudioSession sharedInstance] setActive:NO error:nil];

【讨论】:

以上是关于iOS MPMoviePlayerViewController 在屏幕锁定时停止播放的主要内容,如果未能解决你的问题,请参考以下文章

{python之IO多路复用} IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO

IO模型--阻塞IO,非阻塞IO,IO多路复用,异步IO

IO复用阻塞IO非阻塞IO同步IO异步IO

四种IO模型‘阻塞IO/非阻塞IO/信号驱动IO/异步IO‘

5种IO模型阻塞IO和非阻塞IO同步IO和异步IO

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO