iOS10:自动播放不适用于 WKWebView(requiresUserActionForMediaPlayback = false)
iOS10: Auto play not working on WKWebView (requiresUserActionForMediaPlayback = false)
你好,我现在正在使用 Swift3 开发 iOS 10。
我的方案是使用 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)
该代码不起作用的原因是 .mediaPlaybackRequiresUserAction
从 iOS 10.0 开始弃用
由于没有提供替代方案属性,使用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)
}
将此用于 iOS10:
var mediaTypesRequiringUserActionForPlayback: WKAudiovisualMediaTypes { 设置 }
你好,我现在正在使用 Swift3 开发 iOS 10。
我的方案是使用 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)
该代码不起作用的原因是 .mediaPlaybackRequiresUserAction
从 iOS 10.0 开始弃用
由于没有提供替代方案属性,使用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)
}
将此用于 iOS10:
var mediaTypesRequiringUserActionForPlayback: WKAudiovisualMediaTypes { 设置 }