iOS 7 UIWebview Youtube MPMediaPlayer无法正常工作

时间:2013-09-20 06:41:44

标签: uiwebview youtube mpmovieplayercontroller ios7

我需要在来自youtube的UIWebiview中播放视频。 在旧设备(5.1+

上一切正常

不幸的是,iOS7视频无法播放。它开始loading但它永远不会开始播放。即使视频已完全加载。只有当您停止并按手动播放时,视频才会开始播放。

以下是一些代码:

- (void)viewDidAppear:(BOOL)animated;
{
    [super viewDidAppear:animated];
    if(!self.viewMoviePlayerView.superview) {
        [self.viewMediaContentContainer addSubview:self.viewMoviePlayerView];
    }
    self.viewMoviePlayerView.isScrollingEnabled = NO;

    [self.viewMoviePlayerView loadRequest:[NSURLRequest requestWithURL:
                           [NSURL URLWithString:
                           [NSString stringWithFormat:@"%@%@", @"http://www.youtube.com/embed/", self.currentSelectedItem.guid]]]];
...
}

有关于此的任何建议吗?

1 个答案:

答案 0 :(得分:0)

最近版本的iOS不允许自动播放。您不应该以编程方式开始下载可能会给用户带来成本的数据。我找到了一种方法,但这有点棘手:

  • 显示html字符串而不是网址

    [webview loadHTMLString:<html> baseURL:[[NSBundle mainBundle] resourceURL]];
    
  • html需要是一个嵌入式播放器:

    <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, onStateChange:onPlayerStateChange}});
         }
      function onPlayerReady(a){ a.target.playVideo(); }
      function onPlayerStateChange(event) {
         if (event.data == YT.PlayerState.BUFFERING) {
            event.target.playVideo();
         }
      }
      </script>
      <iframe id='playerID' type='text/html' width='320' height='240'
         src="http://www.youtube.com/embed/xxxxxxxxxxx?enablejsapi=1&rel=0&playsinline=1&autoplay=1" frameborder='0'></iframe>
    </body>
    </html>
    

    这很好用,因为iframe API中的javascript会强制播放器在加载后开始播放,并且每次开始缓冲时都会播放。我强烈建议你read about the youtube API

  • 将您的视频ID放入嵌入中,就好了!