本文由鋼鐵俠般的卿哥(微博)翻譯自蘋果官方文檔:Adopting Multitasking Enhancements on iPad,主要講述iOS 9中iPad的多任務處理功能,歡迎指正。
該文檔包含:
第一部分:iOS 9 分屏多任務--入門
第二部分:iOS 9 分屏多任務--Slide Over & Split View快速入門
第三部分:iOS 9 分屏多任務--畫中畫(PiP)快速入門
依據本章的指南在所支持的iPad上使用畫中畫(PiP)。
想要讓視頻播放支持畫中畫模式,確保你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會繼續在後台運行。當你的應用程序在後台運行,請確保丟棄不需要的資源,如視圖控制器、視圖、圖像和數據緩存。在這種情況下,你期望執行適當且必須的操作,如視頻合成、音頻處理、下載接下來播放的內容等操作,但你必須注意盡可能少地消耗資源。如果你的應用程序在後台消耗太多的資源,系統將終止它。