iOS 9 分屏多任務(wù):畫中畫(PiP)快速入門(中文版)
依據(jù)本章的指南在所支持的iPad上使用畫中畫(PiP)。
想要讓視頻播放支持畫中畫模式,確保你Xcode項目和App配置如下:
- 設(shè)置Base SDK為“Latest iOS”,請參閱 App Distribution Guide 的 Setting the Base SDK 章節(jié)描述。
- 在Capabilities中查看項目的目標,將Background Modes的Audio and AirPlay勾選上。(未來Xcode更新,該選項被命名為Audio、AirPlay以及Picture in Picture)。
- 確保你的應(yīng)用程序的音頻會話采用了適當?shù)念悇e,如 AVAudiOSessionCategoryPlayback。
下一步,為視頻播放選擇合適的AVKit、AV Foundation或WebKit的類服務(wù)視頻播放。選擇取決于應(yīng)用程序的特性和你想要提供的用戶體驗。
- AVKit框架提供了 AVPlayerViewController 類,它會為用戶自動顯示畫中畫按鈕。
如果你使用AVKit 支持PiP功能,但要退出特定的畫中畫視頻,請將播放器視圖控制器的 allowsPictureInPicturePlayback 屬性設(shè)置為NO。
- AVKit還提供了 AVPictureInPictureController 類,可以和AV Foundation 框架的 AVPlayerLayer 類一同使用。如果你想為視頻播放提供自己的視圖控制器和自定義用戶界面,可使用這個方法。
- 如果你支持畫中畫這種方式,但要退出特定視頻畫中畫功能,請不要將視頻的AVPlayerLayer與AVPictureInPictureController對象關(guān)聯(lián)。只要你用播放層實例化一個畫中畫控制器,這個播放視頻層就有畫中畫的功能;選擇退出的方式不執(zhí)行該實例化。
WebKit框架提供了 WKWebView 類,它支持iOS 9的PiP功能。
如果你使用WebKit支持PiP功能,但要退出特定視頻的畫中畫。設(shè)定關(guān)聯(lián)web view 實例的allowsPictureInPictureMediaPlayback屬性為NO。(這個屬性在iOS中9的未來beta版提供)
如果你有一個舊的應(yīng)用程序,使用已棄用的 MPMoviePlayerViewController 或 MPMoviePlayerController 播放視頻,那你必須采用高級的iOS視頻播放框架來支持畫中畫。
重要:蘋果想讓畫中畫功能一直能被用戶操控,只有用戶明確請求畫中畫功能才響應(yīng)。尤其是退到后臺時不能立即響應(yīng)用戶喚起畫中畫功能,這樣的App會被App Store拒絕。
當用戶按壓Home鍵或觸發(fā)一個把他們帶入其他App的通知時,iOS 9自動將一個全屏播放的視頻轉(zhuǎn)到PiP播放。視頻播放使用該功能的要求如下:
- 按照本章之前的描述那樣讓App支持畫中畫功能。
- 使用視圖的視圖填充窗口的邊界來全屏播放視頻。
提示:用戶可以在禁用畫中畫自動喚起,通過設(shè)置 Settings > General > Multitasking > Persistent Video Overlay。如果你認為一切已設(shè)置妥當,但當你按下Home鍵時,發(fā)現(xiàn)你的視頻不會進入畫中畫,請檢查此項設(shè)置。
當App播放的視頻轉(zhuǎn)到畫中畫播放時,系統(tǒng)將管理視頻內(nèi)容的呈現(xiàn),而你的App會繼續(xù)在后臺運行。當你的應(yīng)用程序在后臺運行,請確保丟棄不需要的資源,如視圖控制器、視圖、圖像和數(shù)據(jù)緩存。在這種情況下,你期望執(zhí)行適當且必須的操作,如視頻合成、音頻處理、下載接下來播放的內(nèi)容等操作,但你必須注意盡可能少地消耗資源。如果你的應(yīng)用程序在后臺消耗太多的資源,系統(tǒng)將終止它。