YouTube 嵌入 UIWebViews 不再适用于 iOS

Posted

技术标签:

【中文标题】YouTube 嵌入 UIWebViews 不再适用于 iOS【英文标题】:YouTube embeds in UIWebViews no longer working in iOS 【发布时间】:2014-04-01 10:32:47 【问题描述】:

我已经推出了一段时间的应用程序,它使用UIWebViews 在某些视图中显示 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的主要内容,如果未能解决你的问题,请参考以下文章

YouTube iframe 嵌入的 wmode 参数

Ckeditor嵌入媒体

在WPF应用程序中播放youtube。不支持嵌入式视频

html Youtube嵌入将youtube手表网址转换为youtube嵌入网址

Youtube 视频播放器全屏点击事件

嵌入没有任何徽标或 youtube 链接的 youtube 视频