使用iOS 11在WKWebView中自动播放YouTubevideo
我希望在我的应用中拥有小型YouTube播放器。 我发现推荐的唯一方法是将带有YouTube播放器的网页嵌入到我的应用中。 所以我使用了WKWebView并加载了带有自动播放参数的YouTube播放器页面: https://www.youtube.com/embed/VUbsFtLkGN8?autoplay=1
: https://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上的检查按钮从故事板上做到这一点