如何让YouTube自动播放在UIWebView的工作吗?(How to get YouTube a

2019-07-21 09:19发布

平台:iOS版6.1。 的Xcode 4.6。

我使用YouTube API的Javascript和一个UIWebView。 我能够在视频缩略图手动点击开始播放就好了。 但是,自动播放不工作。 我设置mediaPlaybackRequiresUserAction = NO为徇Web视图。 没运气。

下面是代码:

@interface VideoPlayerController : UIViewController <UIWebViewDelegate>
    @property(strong, nonatomic) IBOutlet UIWebView* webView;
@end

- (void) viewDidLoad
{
    [super viewDidLoad];    

    self.webView.delegate = self;

    NSString *template = [NSString stringWithContentsOfFile:
                       [[NSBundle mainBundle]
                        pathForResource:@"YouTubeTemplate" ofType:@"txt"]];
    NSString *htmlStr = [NSString stringWithFormat: template,
        200, 200,
        @"3G4exdlsRkY"];
    self.webView.mediaPlaybackRequiresUserAction = NO;
    [self.webView loadHTMLString:htmlStr baseURL:nil];
}

- (void) webViewDidFinishLoad:(UIWebView *)wv {
    self.webView.mediaPlaybackRequiresUserAction = NO;
}

该YouTubeTemplate.txt文件是:

<html>
<head>
<script src="https://www.youtube.com/player_api"></script>
<style>
body, div {
    margin: 0px;
    padding: 0px;
}
</style>
</head>
<body>
  <div id="media_area"></div>
</body>
<script>
var ytPlayer = null;

function onYouTubePlayerAPIReady() {
    ytPlayer = new YT.Player('media_area', {height: '%d', width: '%d', videoId: '%@',
        events: {'onReady': onPlayerReady}
    });
}

function onPlayerReady(e) {
    e.target.playVideo();
}
</script>
</html>

所以,基本上,一个UIWebView显示视频缩略图。 然后,我必须点击它来开始播放。 自动播放不工作。 任何想法,我可能是做错了什么?

Answer 1:

是的,你可以把它通过mediaPlaybackRequiresUserAction设置不会自动播放。 这是一个基于HTML文件的一个项目,它在应用程序启动后自动播放呢。

https://dl.dropbox.com/u/17350105/YoutubeAutoPlay.zip

编辑
作为@RajV在评论中提到,你应该使用loadRequest:不是loadHTMLString:由于某种原因,我无法解释。 这是一个工作示例:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
    [webView setMediaPlaybackRequiresUserAction:NO];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"YT_Player" ofType:@"html"] isDirectory:NO]]];
    [self.view addSubview:webView];
}

顺便说一句,如果你要玩YouTube视频在线,你可以按照这个答案我张贴前几天。 (呵呵,我只花了这么多小时在Youtube上的iFrame API,这些天...)



Answer 2:

UIWebView的不尊重,因为苹果的担忧移动带宽使用年龄(即视频开始加载页面时播放,而用户是一个移动电话网络,并吃掉他们的数据)自动播放。 你要么必须访问DOM(如果可能的话在iOS上,不知道)和手动或工作触发它周围。



文章来源: How to get YouTube autoplay to work in UIWebView?