YouTube嵌入UIWebViews不再适用于iOS

时间:2014-02-28 12:12:35

标签: ios iphone uiwebview youtube embed

我有一段时间的应用程序使用UIWebView来显示某些视图上的YouTube视频。今天,在没有对代码进行任何更改的情况下,我的用户开始抱怨YouTube嵌入不起作用:嵌入静止帧和播放按钮显示正常,但点击播放按钮时嵌入屏幕变黑,没有任何加载,没有声音或视频。

以下是我的功能,用于生成嵌入代码,以便从YouTube ID中加入UIWebView

+ (NSString*)codeForYouTubeID:(NSString*)videoID width:(NSUInteger)width height:(NSUInteger)height
{
    static NSString *fmt =
    @"<iframe width='%d' height='%d' src='http://www.youtube.com/embed/%@?showinfo=0&modestbranding=1&rel=0&showsearch=0' frameborder='0' scrolling='0' allowfullscreen></iframe>";

    return [NSString stringWithFormat:fmt, width, height, videoID];
}

将生成的代码放入JSFiddle嵌入显示并播放正常。我还使用了以下具有相同结果的替代格式字符串(来自StackOverflow答案here):

static NSString *fmt =
@"<object>\
    <param name=\"movie\" value=\"http://www.youtube.com/v/%@\"></param>\
    <embed src=\"http://www.youtube.com/v/%@\" type=\"application/x-shockwave-flash\"></embed>\
</object>";

这具有相同的结果,但具有笨拙的自动大小嵌入。行为是相同的:用户可以单击播放按钮,然后嵌入框架变黑,没有其他任何事情发生。对我来说,这发生在我的测试手机(iPhone 4,iOS 7)和模拟器(iOS6和7)上。这在今天之前没有发生,并且没有代码被更改。最近有没有人经历过这个?

2 个答案:

答案 0 :(得分:7)

有人在某种程度上找到了解决方法here。不知道如何标记这样的答案,但为了方便,我会将其复制到这里。

基本上,这个问题似乎与YouTube方面playsinline参数的实施变化有关。无论您提供什么价值,或者您是否使用默认值,都无关紧要,但它似乎打破了以这种方式嵌入的每个 Youtube视频。

在致电[myWebView loadHTMLString:string]之前,解决方案似乎是在添加以下行:

[myWebView setMediaPlaybackRequiresUserAction:NO];

我不知道为什么要修复它,但非常感谢Kyokook Hwang如此迅速地提供了这个答案。它对我有用,而且似乎也适用于其他许多人。

答案 1 :(得分:0)

我遇到了同样的问题。我不确切地知道它何时开始发生,因为我今天刚刚将它报告为一个bug,但它完全以你描述的方式表现出来。

这听起来好像是谷歌出了问题,我们希望这不是故意的。

编辑:朋友在这篇文章中指出了我可能有关的内容:https://productforums.google.com/forum/#!category-topic/youtube/report-a-technical-issue/iHd0NK33k-I