2013-07-02 13 views
9

Jak uzyskać dostęp do funkcji webkitExitFullScreen na urządzeniu mobilnym (iPhone) safari (webkit) na pełnym ekranie.YouTube IFrame API i webkitExitFullScreen na IOS [revisit]

Na iPhonie za pomocą IFrame API wideo zawsze gra na pełnym ekranie, ale nie mogę później uzyskać dostępu do różnych funkcji za pośrednictwem JS, takich jak webkitExitFullScreen.

widziałem, że ten został złożony już na forum i zespołem w YouTube API Forum tu:

https://groups.google.com/d/msg/youtube-api-gdata/fygn23jMbdE/pNE57RDl1gEJ

i

https://groups.google.com/forum/#!msg/youtube-api-gdata/7ioV74oFX84/U8zQ7-Yl9w4J

Chciałem zapytać i śledzenie na ich pytania, zwłaszcza ostatnie, ponieważ było już rok temu. Ale grupy są teraz zamknięte i powiedziałem, że powinienem się tutaj zgłosić. Czy ktoś ma jakiś pomysł, czy zostało to już zaimplementowane gdzieś w the API, a być może go przegapiłem? A może w jaki sposób skontaktować się z zespołem i zapytać go bezpośrednio o postęp lub sytuację?

+0

Podobnych mądry, chciałbym wiedzieć, czy jest tu aktualizacja? @index dostałeś gdziekolwiek? – addedlovely

+0

@addedlovely Nie. Jeszcze nie. To faktycznie stało się dla nas teraz ograniczeniem. :(Wszystko na twojej stronie? – index

+0

@addedlovely Złożyłem to na youtube API Google'a tutaj https://code.google.com/p/gdata-issues/issues/detail?id=5710#makechanges i wspomnieli, że to nie jest w ich planach w najbliższym czasie. :( – index

Odpowiedz

1

napisać to w viewDidLoad

webView112 = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
webView112.backgroundColor = [UIColor redColor]; 
webView112.allowsInlineMediaPlayback = YES; 
webView112.mediaPlaybackRequiresUserAction = NO; 
webView112.delegate = self; 
[self.view addSubview:webView112]; 

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"youtube" ofType:@"html"]; 
NSString *html = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 

[webView112 loadHTMLString:html baseURL:[NSURL URLWithString:@"any static url"]]; 

a poniżej metoda zadziała po zakończeniu wideo

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 
if ([[[request URL] scheme] isEqualToString:@"callback"]) 
{ 

    NSLog(@"get callback"); 
    [webView112 removeFromSuperview]; 

    return NO; 
} 

return YES;} 

i utworzyć plik .html i wklej ten kod w pliku .html

<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 

    <script> 
     var elapsed = -1; 
     var isPlayerLoaded = false; 
     var tag = document.createElement('script'); 
     tag.src = "http://www.youtube.com/player_api"; 
     var firstScriptTag = document.getElementsByTagName('script')[0]; 
     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

     // 4. The API will call this function when the video player is ready. 
     function onPlayerReady(event) { 
      player.playVideo(); 
     } 

     //   function onPlayerError(event) { 
     //   } 
     // 
     function onPlayerStateChange(event) { 
      var state = ''; 
      switch(event.data) { 
       case YT.PlayerState.ENDED: 
        window.location = "callback:anything"; 
        break; 
       case YT.PlayerState.PLAYING: 
        state = 'playing'; 
        break; 
       case YT.PlayerState.PAUSED: 
        state = 'paused'; 
        break; 
       case YT.PlayerState.BUFFERING: 
        state = 'buffering'; 
        break; 
       case YT.PlayerState.CUED: 
        state = 'cued'; 
        break; 
       default: 
        state = 'unstarted'; 
        break; 
      } 
      jQuery('#log').append(state + "<br/>"); 
     } 

     // 3. This function creates an <iframe> (and YouTube player) 
     // after the API code downloads. 
     var player; 
     function onYouTubePlayerAPIReady() { 
      player = new YT.Player('player', { 
            height: '400', 
            width: '320', 
            videoId: 'y84oAUjA8ms', 
            playerVars: { 'autoplay': 0, 'modestbranding': 1, 'rel': 0, 'showinfo': 0, 'iv_load_policy': 3, 'controls': 1, 'playsinline':1 }, 
            events: { 
            'onReady': onPlayerReady, 
            'onStateChange': onPlayerStateChange 
            //          'onError': onPlayerError 
            } 
            }); 
     } 

     </script> 
</head> 
<body style="padding:0;margin:0;background-color:#000000;"> 
    <div id="log" style="background:#fff;height:0px;width:0%;margin-top:0px;"></div> 
    <div id="player" frameborder="0"></div> 
</body> 

Powiązane problemy