2016-09-20 135 views
4

您好我正在使用Swift3在iOS 10上工作。iOS10:自動播放無法在WKWebView上工作(requiresUserActionForMediaPlayback = false)

我的方案是使用WKWebView以內聯方式自動播放YouTube視頻。 我按照Apple Dev Docs的建議,將配置的mediaPlaybackRequiresUserAction設置爲false以啓用視頻自動播放。

但是,這個配置似乎沒有工作,視頻加載正確,但你必須按播放按鈕,使其實際播放。

任何想法?謝謝:)

let config = WKWebViewConfiguration() 
config.requiresUserActionForMediaPlayback = false 
config.allowsInlineMediaPlayback = true 
let webView = WKWebView(frame: self.topView.bounds, configuration: config) 
webView.addObserver(self, forKeyPath: self.webViewLoadingKey, options: .new, context: nil) 
+0

是你能夠自動播放的Youtube視頻內聯使用WKWebView? – 2017-12-17 15:38:54

+0

不,我認爲在WKWebView中存在一些bug,我記得我最終向Swift提交了一個bug。不知道他們是否修好了。您可以嘗試讓我們知道。謝謝。 – RainCast

回答

5

時使用此iOS10:

VAR mediaTypesRequiringUserActionForPlayback:WKAudiovisualMediaTypes {獲取設定}

+0

它不工作,只是嘗試。 – RainCast

3

爲什麼代碼不能正常工作的原因是來自iOS的10.0 enter image description here

不贊成沒有提供替代屬性.mediaPlaybackRequiresUserAction,似乎使用WKWebView不能在當前階段完成的任務。但是,如果你只是想自動播放H5視頻,UIWebView可能是你的選擇

func initPureWeb(){ 
    let web = UIWebView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) 
    web.backgroundColor = UIColor.clear 
    web.isOpaque = false 
    self.view.addSubview(web) 
    web.mediaPlaybackRequiresUserAction = false 
    let videoHtml = "<html><head><style>body{margin:0px 0px 0px 0px;}</style></head> <body> <div id=\"player\"></div> <script> var tag = document.createElement('script'); tag.src = 'http://www.youtube.com/player_api'; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { width:'200', height:'200', videoId:'bHQqvYy5KYo', events: { 'onReady': onPlayerReady } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>"; 
    web.loadHTMLString(videoHtml, baseURL: Bundle.main.resourceURL) 
} 
+0

感謝您的回答。我無法使用UIWebView,因爲它在遷移到iOS10後帶來了很多性能問題。我的代碼實際上是刪除UIWebView,並將其替換爲WKWebView。諷刺的是:D – RainCast

+0

也,requiresUserActionForMediaPlayback一個不被棄用。 – RainCast

相關問題