UIWebView youtube iframe api autoplay / playsinline quit在iOS7中工作

时间:2013-10-07 22:09:09

标签: ios objective-c uiwebview youtube-api youtube-javascript-api

此代码在iOS 6 uiwebview中自动播放视频内联效果非常好。但是,我升级到iOS 7,现在我的视频无法自动播放。有时视频会自动播放,有时则不会。它会在大约10%的时间内自动播放。大多数时候我都会得到一个纺车。如果我从src标签中删除& playsinline = 1,它将自动播放全屏(不是我想要的)。我花了很多时间为这个应用程序创建一个自定义播放器,现在它将无法正常工作。非常感谢任何帮助。

_youTubeWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 320, 184)];
_youTubeWebView.delegate = self;
_youTubeWebView.scrollView.bounces = NO;
_youTubeWebView.allowsInlineMediaPlayback = YES;
_youTubeWebView.mediaPlaybackAllowsAirPlay = YES;
_youTubeWebView.mediaPlaybackRequiresUserAction = NO;
[self.view addSubview:_youTubeWebView];

 NSString* embedHTML = [NSString stringWithFormat:@"<html><body style='margin:0px;padding:0px;'><script type='text/javascript' src='http://www.youtube.com/iframe_api'></script><script type='text/javascript'>function onYouTubeIframeAPIReady(){ytplayer=new YT.Player('playerId',{events:{onReady:onPlayerReady}})}function onPlayerReady(a){ a.target.playVideo(); }</script><iframe id='playerId' type='text/html' width='%@' height='%@'src='http://www.youtube.com/embed/%@?enablejsapi=1&rel=0&playsinline=1&controls=0&showinfo=0' frameborder='0'></body></html>", w, h, videoId];
 [_youTubeWebView loadHTMLString:embedHTML baseURL:nil];

这是一个快速测试文件的链接。 videoPlayerTest.zip

2 个答案:

答案 0 :(得分:7)

这听起来像以下针对Youtube iframe播放器API的开放式错误:

Issue 5204: js iframe api playVideo() doesn't play video in iOS 7

http://code.google.com/p/gdata-issues/issues/detail?id=5204

答案 1 :(得分:-1)

您可以通过将baseURL更改为:

来修复自动播放行为

[[NSBundle mainBundle] resourceURL]