AVPlayerViewController PIP...如何返回应用程序?

问题描述 投票:0回答:3

我们在 iPad Air 2 上使用使用 Xcode 7 构建的应用程序测试版实现了画中画功能。图片可以正确弹出、拖动、暂停等。只是我们不知道如何使第一个按钮起作用。我在文档中没有看到这一点。在我们的应用程序中,如果您将其弹出,则可以将其重新弹出,但如果您离开应用程序并点击该按钮,视频就会停止。它不会像我们在 Safari 中看到的那样将您带回我们的应用程序。

是否有文档或任何博客介绍 PIP 上的第一个按钮的行为方式?

ios ipad multitasking ios9 xcode7
3个回答
4
投票

我也遇到过类似的问题,不同的是,即使在我的应用程序中我也无法返回。我发现画中画正在杀死正在启动视频播放器的视图控制器。我提出的解决方案是保留对该 ViewController 的引用,因此无法从内存中清除它。 我需要做的第二件事是使 ViewController 成为 AVPlayerViewControllerDelegate 和playerController.delegate = self

设置委托后,我需要监听restoreUserInterfaceForPictureInPictureStopWithCompletionHandler

我对导航控制器说要呈现保留的视频播放器 ViewController。


3
投票

您的项目设置正确吗?

  1. iOS 9.0 或之后的链接。

  2. 在项目的 Xcode 功能视图中,选择“后台模式”部分中的“音频”和“AirPlay”。

  3. 使用适当的类别配置您的音频会话,例如 AVAudioSessionCategoryPlayback(如果您尚未在应用程序中这样做)。

对你来说最重要的是:

要响应用户与 PiP 窗口的交互,请实现 AVPlayerViewControllerDelegate 协议的方法。

将项目配置为支持画中画后,播放器视图控制器将为用户提供画中画按钮以及其他播放控件。

developer.apple.com


0
投票

如果您使用

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.