5

我已经嵌入了一个 youtube iFrame 在 UIWebView 网页中播放视频。

“在 youtube 上观看”链接不起作用:

在此处输入图像描述

代码是:

<iframe name="player" id="player" src="http://www.youtube.com/embed/{$firstParsedVideo}?HD=1;rel=0;showinfo=0" width="279" height="155"></iframe>

其中 $firstParsedVideo 是视频 ID。

我在 Cocoa Osx WebView 中做了同样的事情,而且效果很好。

谢谢

4

3 回答 3

0

据我所知,Apple 不允许您在自己的应用程序的 WebView 中播放 Youtube 视频,他们也会拒绝您的应用程序。因为我以前有过这样的经历。

顺便说一句,我写了一个在我的应用程序中播放 Youtube 视频的方法:

- (void)embedYouTube:(NSString*)videoId frame:(CGRect)frame {

NSString* embedHTML = @"\
   <html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
   <embed id=\"yt\" src=\"http://www.youtube.com/watch?v=%@\" type=\"application/x-shockwave-flash\" \
width=\"%0.0f\" height=\"%0.0f\"></embed>\
   </body></html>";
NSString* html = [NSString stringWithFormat:embedHTML, videoId, frame.size.width, frame.size.height];
[self.webView loadHTMLString:html baseURL:nil];
}

希望能帮助到你。

于 2013-09-18T08:18:42.883 回答
0

这是问题的真正解决方案:

“在 youtube 上观看”链接有一个 target = open in new window 属性,为了避免这种情况,这里是相关代码:

- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures {
  if (!navigationAction.targetFrame.isMainFrame) {
    [webView loadRequest:navigationAction.request];
  }
  return nil;
}

迅速:

extension YoutubeView: WKUIDelegate {
    func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
        if !(navigationAction.targetFrame?.isMainFrame ?? false) {
            webView.load(navigationAction.request)
        }
        return nil
    }
}
于 2021-02-16T11:41:03.380 回答
-1

它不起作用的原因是 web 视图 Base URL 设置为本地。由于我的 web 视图加载本地资源(图像),我需要将其设置为本地。但这意味着我无法加载在线资源(youtube 视频)。一个或另一个。

于 2016-01-19T08:40:22.507 回答