使用iOS 11在WKWebView中自动播放YouTubevideo

我希望在我的应用中拥有小型YouTube播放器。 我发现推荐的唯一方法是将带有YouTube播放器的网页嵌入到我的应用中。 所以我使用了WKWebView并加载了带有自动播放参数的YouTube播放器页面: https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1 autoplay https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1

代码如下:

 let webConfiguration = WKWebViewConfiguration() let webView = WKWebView(frame: .zero, configuration: webConfiguration) let youtubeURL = URL(string: "https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1") webView.load(URLRequest(url: youtubeURL!)) 

这会在桌面Safari中嵌入播放器url自动播放,但不会在移动版Safari或WKWebView中自动播放。 我可以强迫WKWebView以某种方式自动播放video吗? 或使用其他YouTube播放器url?

似乎iframe API自上一个答案时间以来已经发生了变化。 我已根据iframe API Reference更新了WKWebView加载的HTML。 使用此代码,我设法在WKWebView上的WKWebView中全屏播放YouTubevideo。

 class YouTubeVideoPlayerVC: UIViewController { @IBOutlet weak var videoPlayerView: WKWebView! var videoURL:URL! // has the form "https://www.youtube.com/embed/videoID" var didLoadVideo = false override func viewDidLoad() { super.viewDidLoad() videoPlayerView.configuration.mediaTypesRequiringUserActionForPlayback = [] } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() // Size of the webView is used to size the YT player frame in the JS code // and the size of the webView is only known in `viewDidLayoutSubviews`, // however, this function is called again once the HTML is loaded, so need // to store a bool indicating whether the HTML has already been loaded once if !didLoadVideo { videoPlayerView.loadHTMLString(embedVideoHtml, baseURL: nil) didLoadVideo = true } } var embedVideoHtml:String { return """     
""" } }
 var youTubeVideoHTML: String = "  
" func playVideoWithId(videoId: String) { var html: String = String(format: youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId) }

您可以使用或替代

YTPlayer播放Youtubevideo

对于小型Youtube MediaPlayer,您可以申请: –

 YourVideoView.configuration.allowsInlineMediaPlayback = true 

你也可以通过InLine Playback上的检查按钮从故事板上做到这一点

在此处输入图像描述