想要让视频播放支持画中画模式,确保你Xcode项目和App配置如下:
设置Base SDK为“Latest iOS”,请参阅 App Distribution Guide 的 Setting the Base SDK 章节描述。
在Capabilities中查看项目的目标,将Background Modes的Audio and AirPlay勾选上。(未来Xcode更新,该选项被命名为Audio、AirPlay以及Picture in Picture)。
确保你的应用程序的音频会话采用了适当的类别,如 AVAudiOSessionCategoryPlayback。
下一步,为视频播放选择合适的AVKit、AV Foundation或WebKit的类服务视频播放。选择取决于应用程序的特性和你想要提供的用户体验。
AVKit框架提供了 AVPlayerViewController 类,它会为用户自动显示画中画按钮。
如果你使用AVKit 支持PiP功能,但要退出特定的画中画视频,请将播放器视图控制器的 allowsPictureInPicturePlayback 属性设置为NO。
AVKit还提供了 AVPictureInPictureController 类,可以和AV Foundation 框架的 AVPlayerLayer 类一同使用。如果你想为视频播放提供自己的视图控制器和自定义用户界面,可使用这个方法。
如果你支持画中画这种方式,但要退出特定视频画中画功能,请不要将视频的AVPlayerLayer与AVPictureInPictureController对象关联。只要你用播放层实例化一个画中画控制器,这个播放视频层就有画中画的功能;选择退出的方式不执行该实例化。
WebKit框架提供了 WKWebView 类,它支持iOS 9的PiP功能。
如果你使用WebKit支持PiP功能,但要退出特定视频的画中画。设定关联web view 实例的allowsPictureInPictureMediaPlayback属性为NO。(这个属性在iOS中9的未来beta版提供)
如果你有一个旧的应用程序,使用已弃用的 MPMoviePlayerViewController 或 MPMoviePlayerController 播放视频,那你必须采用高级的iOS视频播放框架来支持画中画。
重要:苹果想让画中画功能一直能被用户操控,只有用户明确请求画中画功能才响应。尤其是退到后台时不能立即响应用户唤起画中画功能,这样的App会被App Store拒绝。
当用户按压Home键或触发一个把他们带入其他App的通知时,iOS 9自动将一个全屏播放的视频转到PiP播放。视频播放使用该功能的要求如下:
按照本章之前的描述那样让App支持画中画功能。
使用视图的视图填充窗口的边界来全屏播放视频。
提示:用户可以在禁用画中画自动唤起,通过设置 Settings > General > Multitasking > Persistent Video Overlay。如果你认为一切已设置妥当,但当你按下Home键时,发现你的视频不会进入画中画,请检查此项设置。
当App播放的视频转到画中画播放时,系统将管理视频内容的呈现,而你的App会继续在后台运行。当你的应用程序在后台运行,请确保丢弃不需要的资源,如视图控制器、视图、图像和数据缓存。在这种情况下,你期望执行适当且必须的操作,如视频合成、音频处理、下载接下来播放的内容等操作,但你必须注意尽可能少地消耗资源。如果你的应用程序在后台消耗太多的资源,系统将终止它。