YouTube嵌入UIWebViews不再适用于iOS

ben*_*wad 10 embed youtube iphone uiwebview ios

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

以下是我用于生成嵌入代码的功能,该代码可以UIWebView从YouTube ID中输入:

+ (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];
}
Run Code Online (Sandbox Code Playgroud)

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

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>";
Run Code Online (Sandbox Code Playgroud)

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

ben*_*wad 7

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

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

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

[myWebView setMediaPlaybackRequiresUserAction:NO];
Run Code Online (Sandbox Code Playgroud)

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