我有一段时间的应用程序使用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)上。这在今天之前没有发生,并且没有代码被更改。最近有没有人经历过这个?
答案 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