我们在 iPad Air 2 上使用使用 Xcode 7 构建的应用程序测试版实现了画中画功能。图片可以正确弹出、拖动、暂停等。只是我们不知道如何使第一个按钮起作用。我在文档中没有看到这一点。在我们的应用程序中,如果您将其弹出,则可以将其重新弹出,但如果您离开应用程序并点击该按钮,视频就会停止。它不会像我们在 Safari 中看到的那样将您带回我们的应用程序。
是否有文档或任何博客介绍 PIP 上的第一个按钮的行为方式?
我也遇到过类似的问题,不同的是,即使在我的应用程序中我也无法返回。我发现画中画正在杀死正在启动视频播放器的视图控制器。我提出的解决方案是保留对该 ViewController 的引用,因此无法从内存中清除它。 我需要做的第二件事是使 ViewController 成为 AVPlayerViewControllerDelegate 和playerController.delegate = self
设置委托后,我需要监听restoreUserInterfaceForPictureInPictureStopWithCompletionHandler
我对导航控制器说要呈现保留的视频播放器 ViewController。
您的项目设置正确吗?
iOS 9.0 或之后的链接。
在项目的 Xcode 功能视图中,选择“后台模式”部分中的“音频”和“AirPlay”。
使用适当的类别配置您的音频会话,例如 AVAudioSessionCategoryPlayback(如果您尚未在应用程序中这样做)。
对你来说最重要的是:
要响应用户与 PiP 窗口的交互,请实现 AVPlayerViewControllerDelegate 协议的方法。
将项目配置为支持画中画后,播放器视图控制器将为用户提供画中画按钮以及其他播放控件。
如果您使用
AVPlayerViewController
来播放视频,这非常简单,只需将 AVPlayerViewController
的委托设置为您的 viewController,然后实现以下函数以在应用程序启动 pip 模式时恢复已关闭的playerViewController。
func playerViewController(_ playerViewController: AVPlayerViewController, restoreUserInterfaceForPictureInPictureStopWithCompletionHandler completionHandler: @escaping (Bool) -> Void) {
// Present dismissed viewController again to continue playing in full screen mode
self.present(playerViewController, animated: true)
completionHandler(true)
}