我在这里看到很多关于这个问题的帖子,但仍然找不到这个问题的完美答案.
所以我有一个tableview,每个单元格里面都有一个播放按钮.当用户点击播放按钮时,我会UIWebView向此单元格添加一个,然后播放YouTube视频.
static NSString *youTubeVideoHTML = @"<html>\
<body style=\"margin:0;\">\
<iframe class=\"youtube-player\" type=\"text/html\" width=\"%0.0f\" height=\"%0.0f\" src=\"http://www.youtube.com/embed/%@\" frameborder=\"0\">\
</iframe>\
</body>\
</html>";
- (void)playVideoWithId:(NSString *)videoId {
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, self.frame.size.width, self.frame.size.height, videoId];
[self loadHTMLString:html baseURL:nil];
}
Run Code Online (Sandbox Code Playgroud)
问题:
此代码实际上并不像我想要的那样播放视频,只是启动YouTube播放器并使用YouTube红色播放按钮进行显示.只有当用户点击红色按钮时,视频才会开始播放.
因此,用户必须点击两个按钮,直到视频开始 - 而不是最好的用户体验...
就像我说的那样,我看到很多关于这个问题的帖子,有些根本不起作用,有些作品但有一些问题让我感到困扰.
我找到的其中一个工作解决方案是@ilias的这篇文章,他展示了如何使用从文件中加载HTML(而不是像我这样的字符串),这个问题的问题在于我播放的每个视频我需要:
加载htm文件 - >将视频ID嵌入其中 - >将文件写入光盘 - >现在我只能播放视频.
奇怪的是,此解决方案仅在您从文件加载Web视图请求时才起作用,如果我尝试从等于文件内容的字符串加载请求,则该方法无效.
我想在我的应用中安装小型YouTube播放器。我发现推荐的唯一方法是将带有YouTube播放器的网页嵌入到我的应用中。因此,我使用WKWebView并使用autoplay参数加载了嵌入YouTube播放器页面: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!))
Run Code Online (Sandbox Code Playgroud)
此嵌入的播放器URL在桌面Safari中自动播放,但在移动Safari或WKWebView中不自动播放。我可以强迫WKWebView以某种方式自动播放视频吗?还是使用其他YouTube播放器网址?