3

我曾经使用带有以下代码的 uiwebviews 在我的 iOS 应用程序中播放视频:

NSString *embedHTML = @"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \
width=\"%0.0f\" height=\"%0.0f\"></embed>\
</body></html>";

NSString *html = [NSString stringWithFormat:embedHTML, urlToOpen, frame.size.width, frame.size.height];
self.videoView = [[UIWebView alloc] initWithFrame:frame];
[videoView loadHTMLString:html baseURL:nil];
[self.videoView setDelegate:self];
[self.view addSubview:videoView];
[videoView release];

在 iOS6 上它不起作用。

有没有人找到任何解决方案来播放用 iOS6 编译的 youtube 视频?

谢谢

4

6 回答 6

1

好的,这就是答案。

使用http://www.youtube.com/v/XXXXXXX

而不是http://www.youtube.com/watch?v=XXXXXXX

在这里找到它:

iOS - UIWebView 由于解析错误而无法工作

于 2012-09-23T17:34:04.083 回答
0

iOS6 中带有 Webviews 的 Youtube 需要在 WebView 中启用 cookie。为此,您需要在 AppDelegate 中添加以下指令:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
      [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
      ...
}
于 2013-01-09T17:48:57.707 回答
0

我在模拟器中试过这个

[_webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@" https://www.youtube.com/embed/b22cH2sfVcc "]]];

它有效

直接将 youtube 视频的嵌入 src 提供到 web 视图,它就可以工作。

于 2013-07-01T12:16:42.073 回答
0

我刚刚使用 iOS6 Simulator 和 iOS5 设备进行了测试,如果您使用新的嵌入代码 (iframe),那么它可以工作。

<iframe class="youtube-player" type="text/html" width="320" height="200" src="http://www.youtube.com/embed/VIDEOID" frameborder="0"></iframe>

唯一的缺点是 iframe 包含大量下载的 dom 元素。

于 2012-09-23T17:46:17.153 回答
0

用以下代码替换您的代码

   NSString *embedHTML = @"\
    <html><head>\
    <style type=\"text/css\">\
    body {\
    background-color: transparent;\
    color: white;\
    }\
    </style>\
    </head><body style=\"margin:0\">\
    <iframe title=\"YouTube Video\" class=\"youtube-player\" type=\"text/html\"\
    width=\"%0.0f\" height=\"%0.0f\" src=\"%@\"\
    frameborder=\"0\" allowFullScreen ></iframe>";
    NSString *urlToOpen = @"http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=1";
    NSString *html = [NSString stringWithFormat:embedHTML, urlToOpen, frame.size.width,     frame.size.height];
    self.videoView = [[UIWebView alloc] initWithFrame:frame];
    [videoView loadHTMLString:html baseURL:nil];
    [self.videoView setDelegate:self];
    [self.view addSubview:videoView];
    [videoView release];

由于 Youtube 已经放弃了 webview 视频并引入了 iframe,所以你必须在 ios 6 上使用这个 html,而在 ios 5 上使用旧的。请记住,您的 youtube 视频 url 链接应该类似于 http://www.youtube.com/embed/video_Id?autoplay=1 ,您可以在其中将 video_Id 替换为您自己的视频 ID。

于 2012-12-04T12:05:58.660 回答
0

如果您在 Phonegap 中使用嵌入,您已在 Phonegap 设置中将 OpenAllWhitelistURLsInWebView 设置为 YES

于 2012-12-13T16:27:32.817 回答