
iOS9中多任务表现形式画中画模式技术分享.doc
2页蓝鸥科技wv/wJiOS 9中多任务表现形式画中画模式技术分享iOS 9中多任务的另一种表现形式就是视频的画中画模式:即使退出了,你 的视频app也可以在用户使用别的app的时候保持播放,比如-•边看美剧一边 写口记或者发邮件这大概会是所有的视频类app都必须要支持的特性丫,实 现起来也很容易:使用iOS 9 SDK构建你的app;在app的Capabilities里,将 Background Modes 的"Audio, AirPlay, and Picture in Picture"勾选上 (Xcode 7 beta 中暂时为"Audio and AirPlay");将 AudioSession Catogory 设 置为合适的选项,比如 AVAudioSessionCategoryPlayback 使用 AVKit, AVFoundation或者WebKit框架来播放视频在iOS 9中,一直伴随我们的MediaPlayer框架中的视频播放部分正式宣 布寿终正寝也就是说,如果你在使用MPMoviePlayerViewControl 1 er或者 MPMoviePlayerControl ler在播放视频的诏,你就无法使用画中画的特性了,因 此尽快转型到新的视频播放框架会是急迫的适配任务。
因为画中画模式是棊于 AVPlayerLayer的当切换到画中画时,会将正在播放视频的layer取出,然 后进行缩小后添加到新的界面的layer上这也是旧的MediaPlayer框架无法 支持画中画的主要原因如果你使用A VP 1 ay er V i ewCon trol ler的话,一旦满足这些简单的条件以 后,你应该就可以在使用相应框架全屏播放视频时看到右下角的画中画按钮丫 不论是点击这个按钮进入画中画模式还是直接使用Home键切换到后台,己经在 播放的视频就将缩小到屏幕右下角成为画中画,并保持播放在画中画模式下,系统会在视频的AVPlayerLayer上添加一套默认控件, 用来控制暂停/继续,关闭,以及返回app前两个控制没什么可多说的,返回app 的话需要我们自己处理返回后的操作一般来说我们希望能够恢复到全屏模式并 且继续播放这个视频,因为AVP1 ayerViewController进行播放时我们一般不会 去操作AVPlayerLayer,在恢复时就需要实现AVPlayerVi ewCon trol lerDelegate 中的-playerViewControllerirestoreUserlnterfaceForPicturelnPictureStopWith Comp 1 etionHand 1 er:来根据传入的 ViewController 重建 UI,并将 true 通过 CompletionHandler返回给系统,己告知系统恢复成功(当然如果无法恢复的话 需要传递false) o我们也可以直接用AVPlayerLayer来构建的自定义的播放器。
这时我们需 要通过传入所使用的AVPlayerLayer来创建一个AVPicturelnPictureControllerAVPicturcInPicturcControllcr 提供丫检查 是否支持画中画模式的API,以及其他一些控制画中画行为的方法i与直接使用 AVP 1 ayerV i ewCon tro ller不太一样的是,在恢复时,系统将会把岡中岡时缩小蓝鸥科技IL- 的AVPlayerLayer返还到之前的view上我们可以通过AVPicturelnPictureControllerDelegate中的相应方法来获知画中画的执行情 况,并结合自己app的情况来恢复UT。












