Html видео в webView - PullRequest
       23

Html видео в webView

1 голос
/ 08 мая 2020

У меня есть wkWebView, где через скриптAPI я загружаю видео и проигрываю его. Есть два вопроса.

1) Когда видео загружается, оно очень маленькое, а при воспроизведении становится полноэкранным. Как сразу сделать его полноэкранным?

2) Как я могу автоматически переключиться на другой в конце контроллера просмотра видео?

@IBOutlet weak var backgroundView: UIView!

    var webView: WKWebView!
    var videoURL:URL!
    var didLoadVideo = false


    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        if !didLoadVideo {
            webView.loadHTMLString(embedVideoHtml, baseURL: nil)
            didLoadVideo = true
        }

    }

    override func viewDidLoad() {
        super.viewDidLoad()
        setupWebView()

       videoURL = URL(string: "https://www.youtube.com/embed/kBVxMvATaFU")

    }

    func setupWebView() {
        let webConfiguration = WKWebViewConfiguration()
        if #available(iOS 10.0, *) {
            webConfiguration.mediaTypesRequiringUserActionForPlayback = []
        } else {
            // Fallback on earlier versions
            webConfiguration.mediaPlaybackRequiresUserAction = false
        }
        webConfiguration.allowsInlineMediaPlayback = true

        webView = WKWebView(frame: CGRect(x: 0, y: 0, width: backgroundView.frame.width, height:  backgroundView.frame.height), configuration: webConfiguration)
        webView.uiDelegate = self

        self.backgroundView.addSubview(webView)


    }

    var embedVideoHtml:String {
        return """
        <!DOCTYPE html>
        <html>
        <body>
        <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
        <div id="player"></div>

        <script>
        var tag = document.createElement('script');

        tag.src = "https://www.youtube.com/iframe_api";
        var firstScriptTag = document.getElementsByTagName('script')[0];
        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

        var player;
        function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
        playerVars: { 'autoplay': 1, 'controls': 2, 'playsinline': 0 , 'frameborder': 0},
        height: '\(webView.frame.width)',
        width: '\(webView.frame.height)',
        videoId: '\(videoURL.lastPathComponent)',
        events: {
        'onReady': onPlayerReady
        }
        });

        }
        function onPlayerReady(event) {
        event.target.playVideo();
        }

        //I try to stop the video after 6 seconds, but it doesn’t work!

        var done = false;
        function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
        setTimeout(stopVideo, 6000);
        done = true;
        }
        }
        function stopVideo() {
        player.stopVideo();
        }
        </script>
        </body>
        </html>
        """
    }
...