iOS 9 分屏多任務(wù):畫中畫(PiP)快速入門(中文版)

依據(jù)本章的指南在所支持的iPad上使用畫中畫(PiP)。

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





























