【问题标题】:Accessing delegate callback of AVPictureInPictureController for a WKWebView访问 WKWebView 的 AVPictureInPictureController 的委托回调
【发布时间】:2018-03-20 20:08:21
【问题描述】:

我需要能够访问委托回调方法,pictureInPictureControllerDidStopPictureInPicture(_:) 的原生 AVPictureInPictureControllerWKWebViewAVPictureInPictureController 没有像旧的 MPMoviePlayerViewController 那样的全局通知事件,我无法创建自己的 AVPictureInPictureController 实例以与 Web 视图一起使用来访问委托回调。我找不到关于如何连接到 WKWebView 对象的这个内部 AVPictureInPictureController 的文档。我希望至少有一些方法可以使用 KVO。

https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForPictureInPicture.html

WebKit 框架提供了 WKWebView 类,在 iOS 9 中支持画中画。

https://developer.apple.com/documentation/avkit/avpictureinpicturecontrollerdelegate/1614717-pictureinpicturecontrollerdidsto

【问题讨论】:

    标签: ios swift delegates wkwebview picture-in-picture


    【解决方案1】:

    我发现有一个名为PGPictureInPictureProxyPictureInPictureActiveChangedNotification 的通知,当视频移动到画中画时调用,然后在画中画关闭时调用。我确信它可以随时更改或删除,但它现在似乎可以正常工作。

    【讨论】:

      【解决方案2】:

      如果您可以访问您的 AVPictureInPictureController,您可以简单地设置它的委托并实现回调

      class MyWebView: WKWebView {
      
          self.myPictureInPictureController.delegate = self
      
      }
      
      extension MyWebView: AVPictureInPictureControllerDelegate {
          func pictureInPictureControllerDidStopPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) {
              //code
          }
      }
      

      【讨论】:

      • 我没有创建独立的AVPictureInPictureController。我依赖于WKWebView 内部的那个。
      • 我尝试按照您的建议进行子类化,但它仍然无法让我访问内部 AVPictureInPictureController。我需要利用 WKWebView 版本,因为我正在使用自定义 Javascript 视频播放器加载预贴广告和视频。在 AVPictureInPictureController 中创建我自己的 AVPlayer 不会给我这种能力。
      猜你喜欢
      • 2022-01-21
      • 2016-09-01
      • 1970-01-01
      • 2018-02-20
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      相关资源
      最近更新 更多