2016-08-04 17 views
6

Do odtwarzania filmów z YouTube, używamNiektóre filmy z YouTube'a nie są odtwarzane w interfejsie UIWebView. Pokazano - (Wystąpił błąd spróbuj ponownie później)

-(void)playYoutubeVideo:(NSString *)youtubeUrl { 
    NSString *videoId = [self extractYoutubeIdFromLink:youtubeUrl]; 
    NSLog(@"video Id %@",videoId); 
    [self playVideoWithId:videoId]; 
} 

- (NSString *)extractYoutubeIdFromLink:(NSString *)link { 
    NSString *regexString = @"((?<=(v|V)/)|(?<=be/)|(?<=(\\?|\\&)v=)|(?<=embed/))([\\w-]++)"; 
    NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:regexString 
                     options:NSRegularExpressionCaseInsensitive 
                      error:nil]; 
    NSArray *array = [regExp matchesInString:link options:0 range:NSMakeRange(0,link.length)]; 
    if (array.count > 0) { 
    NSTextCheckingResult *result = array.firstObject; 
    return [link substringWithRange:result.range]; 
    } 
    return nil; 
} 

- (void)playVideoWithId:(NSString *)videoId { 
    NSString *youTubeVideoHTML = @"<html><head><style>body{margin:0px 0px 0px 0px;}</style></head> <body> <div id=\"player\"></div> <script> var tag = document.createElement('script'); tag.src = 'http://www.youtube.com/player_api'; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { width:'%f', height:'%f', videoId:'%@', events: { 'onReady': onPlayerReady } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>"; 
    NSString *html = [NSString stringWithFormat:youTubeVideoHTML,300,200, videoId];  
    [webView loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]]; 

} 

Dostaję identyfikator wideo z youtube url zegarka.

grzywny pracujący dla adresów URL jak https://www.youtube.com/watch?v=p9mddDM43wE

ale poniżej YouTube wideo nie jest odtwarzany w UIWebView

https://www.youtube.com/watch?v=CT-fPP1fjDA

Pokazuje poniższy błąd,

enter image description here

Co może być problemem?
Czy ktoś może wyjaśnić?

+0

zobacz to raz może to ci pomóc http://stackoverflow.com/questions/11509164/youtube-video-id-from-url-objective-c –

+0

@ Anbu.Karthik, wypróbowałem wszystkie regex s nic nie pracuje dla osadzony URL, użyłem tego samego kodu, który opublikowałem w tym poście, bez powodzenia ... :( – NAZIK

+0

Trzeba zapytać skracacza adresów URL, czym jest prawdziwy adres URL, który zawiera identyfikator. 'NSURLConnectionDelegate', który obsługuje przekierowania w celu przechwycenia identyfikatora, gdy otrzymasz przekierowanie ze skróconego – Avi

Odpowiedz

0

Niedawno stanąłem w obliczu tego samego problemu w mojej aplikacji na iOS, gdzie ładujemy link do filmu z YouTube wewnątrz UIWebView.

Po złamaniu głowy przez długi czas, okazało się, że problem dotyczy ustawień urządzenia "data i godzina".

Data urządzenia została ustawiona na bardzo starą. Po zaktualizowaniu ustawień filmy youtube zaczęły się ładować w widoku internetowym.