iOS10:自动播放无法在WKWebView上运行(requiresUserActionForMediaPlayback = false)

时间:2016-09-20 22:33:15

标签: swift swift3 ios10

您好我现在正在使用Swift3在iOS 10上工作。

我的方案是使用WKWebView自动播放youtube视频内联。 我将config的mediaPlaybackRequiresUserAction设置为false,以启用视频自动播放,如Apple Dev Docs所示。

然而,此配置似乎不起作用,视频正确加载,但您必须按播放按钮才能实际播放。

有什么想法吗?谢谢:))

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)

2 个答案:

答案 0 :(得分:5)

将此用于iOS10:

var mediaTypesRequiringUserActionForPlayback:WKAudiovisualMediaTypes {get set}

答案 1 :(得分:3)

该代码不起作用的原因是iOS 10.0中不推荐使用的.mediaPlaybackRequiresUserAction enter image description here

由于没有提供替代属性,使用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)
}