如何使用WkWebView内联播放视频

UBL*_*arn 18 iphone video swift wkwebview

当您使用iphone并在网络视图中播放视频时,此视频将在本机播放器中以全屏模式打开.

我们尝试将UIWebView和WKWebView与"allowsInlineMediaPlayback"属性设置为true.但是,网络内容中的视频全屏启动,带有iphone iOS 10.2.你知道我能做什么吗?

let webConfiguration = WKWebViewConfiguration()
// Fix Fullscreen mode for video and autoplay
webConfiguration.preferences.javaScriptEnabled = true
webConfiguration.mediaPlaybackRequiresUserAction = false
webConfiguration.allowsInlineMediaPlayback = true

webView = WKWebView(frame: CGRect(x: 0, y: 0, width:self.backgroundView.frame.width, height:self.backgroundView.frame.height), configuration: webConfiguration)
Run Code Online (Sandbox Code Playgroud)

环境:Xcode 8,swift 3

one*_*ewh 14

您的代码没有问题,但是您还需要一个步骤,URL您使用的视频应始终带有参数playsinline=1.

//step1
if let videoURL:URL = URL(string: "https://somevideo.mp4?playsinline=1")
//step2
webConfiguration.allowsInlineMediaPlayback = true
Run Code Online (Sandbox Code Playgroud)

然后你可以做左边的事情.


Har*_*kar 8

这是您需要的解决方案,我通过编程使播放器并更改一些代码来内联播放视频。

var myPlayer: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let webConfiguration = WKWebViewConfiguration()
        webConfiguration.allowsInlineMediaPlayback = true
        webConfiguration.mediaTypesRequiringUserActionForPlayback = []

        myPlayer = WKWebView(frame: CGRect(x: 0, y: 0, width: 375, height: 300), configuration: webConfiguration)
        self.view.addSubview(myPlayer)

        if let videoURL:URL = URL(string: "https://www.youtube.com/embed/9n1e1N0Sa9k?playsinline=1") {
             let request:URLRequest = URLRequest(url: videoURL)
             myPlayer.load(request)
        }

        //OR to show player control also, use this
        /*if let videoURL:URL = URL(string: "https://www.youtube.com/embed/9n1e1N0Sa9k?playsinline=1&controls:1") {
             let request:URLRequest = URLRequest(url: videoURL)
             myPlayer.load(request)
        }*/
    }
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果通过情节提要板初始化WKWebView,则必须在该元素的属性检查器中选中“内联播放”框,而不是通过编程方式传递WKWebViewConfiguration。 (2认同)

Man*_*ius 7

我最终这样做了:

func load(url: String) {
    let html = "<video playsinline controls width=\"100%\" src=\"\(url)\"> </video>"
    self.webView.loadHTMLString(html, baseURL: nil)
}
Run Code Online (Sandbox Code Playgroud)

将 Web 视图加载为 HTML 并添加一些视频标签以自定义 UX。


小智 6

这对我有用:

let configuration = WKWebViewConfiguration()
if #available(iOS 10.0, *) {
   configuration.mediaTypesRequiringUserActionForPlayback = []
}
configuration.allowsInlineMediaPlayback = true
let webView = WKWebView(frame: frame, configuration: configuration)
Run Code Online (Sandbox Code Playgroud)