YouTube 嵌入 UIWebViews 不再适用于 iOS
Posted
技术标签:
【中文标题】YouTube 嵌入 UIWebViews 不再适用于 iOS【英文标题】:YouTube embeds in UIWebViews no longer working in iOS 【发布时间】:2014-04-01 10:32:47 【问题描述】:我已经推出了一段时间的应用程序,它使用UIWebView
s 在某些视图中显示 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 嵌入显示并正常播放。我还使用了以下具有相同结果的替代格式字符串(来自 *** 答案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)上。这在今天之前没有发生,并且没有更改任何代码。最近有没有其他人经历过这种情况?
【问题讨论】:
【参考方案1】:在一定程度上,有人找到了解决方法here。不知道如何标记这样的答案,但为方便起见,我将其复制到此处。
本质上,该问题似乎与 YouTube 方面 playsinline
参数的实施变化有关。不管你提供什么值,或者你是否使用默认值,但它似乎破坏了每个以这种方式嵌入的 Youtube 视频。
解决方案似乎是在您调用 [myWebView loadhtmlString:string]
之前添加以下行:
[myWebView setMediaPlaybackRequiresUserAction:NO];
我不知道为什么会这样修复它,但非常感谢 Kyokook Hwang 如此迅速地提供答案。它对我有用,似乎也适用于许多其他人。
【讨论】:
您知道其他解决方法吗?由于完全相同的问题,我的应用上的所有视频都无法正常播放。 这是我能找到的唯一一个。它对我有用,您的嵌入代码格式与我在第一个示例中给出的格式相同吗? 现在,出于某种我相信 Google Ends 的原因,它正在发挥作用。【参考方案2】:我遇到了同样的问题。我不知道它是从什么时候开始发生的,因为我今天刚把它报告为一个错误,但它的表现方式与你描述的完全一样。
这听起来很像是 Google 出了问题,希望这不是故意的。
编辑:一位朋友向我指出了可能相关的帖子:https://productforums.google.com/forum/#!category-topic/youtube/report-a-technical-issue/iHd0NK33k-I
【讨论】:
以上是关于YouTube 嵌入 UIWebViews 不再适用于 iOS的主要内容,如果未能解决你的问题,请参考以下文章