2012-07-14 155 views
2

這是很奇怪的,我...YouTube視頻的WebView - iPhone

我有一個簡單的WebView加載和與用戶完全一樣的Safari移動(iPhone)相互作用。現在,當你訪問m.youtube.com在Safari中,當你點擊一個鏈接,像這樣的URL發生變化......

http://m.youtube.com/watch?gl=US&hl=en&client=mv-google&v=HX6SyoZ5kw8 

這樣做的問題是,我不認爲正在使用的網址在我的webview中...我的意思是什麼?下面的代碼被用於用戶每次嘗試的點擊一個鏈接上加載一個URL,它的工作原理,但我有與YouTube的問題...

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 
NSURL *url = request.URL; 
NSString *urlString = url.absoluteString; 
NSLog(@"%@",urlString); 
VideoURLTextBox.text = urlString; 
return YES; 
} 

當我第一次啓動的WebView加載m.youtube.com和NSLogs()它到我的控制檯,但是當我決定點擊一個視頻時,它無法NSLog()因此我不認爲一個新的URL正在加載,但是當你加載m.youtube。在Safari瀏覽器中點擊,然後點擊上面加載url的視頻,那麼爲什麼在我的iPhone應用程序中沒有NSLog()呢?

+0

你是不是說這個方法沒有被調用,所以你沒有看到你的'NSLog'?如果是這樣,你可能會錯過'UIWebView'委託。 – ohr 2012-07-14 01:32:22

+0

不,因爲當我第一次加載web視圖時,方法確實在開始時被調用... – 2012-07-14 01:40:37

+0

您是否爲要訪問的每個URL使用'+(id)requestWithURL:(NSURL *)theURL'?你如何處理?如果你可以發佈很棒的代碼。 – ohr 2012-07-14 02:48:35

回答

1

您可能看到的是,youtube視頻正在運行javascript來播放視頻,您必須攔截javascript回調才能看到該視頻。這裏有一個YouTube視頻播放器api的鏈接,詳細描述回調,https://developers.google.com/youtube/js_api_reference#SubscribingEvents

如果你只是想在iOS應用程序中嵌入YouTube視頻,然後使用它。

使用手機YouTube網站並不是很好,過去我遇到過許多問題,最終成爲了UIWebView類別。我碰到你的問題,並決定把它扔在GitHub上:-)

https://github.com/enigmaticflare/UIWebView-YouTube--iOS-Category--ARC-compliant-code

的UIWebView + iOS版YouTube類別,以簡化加載YouTube視頻。

說明

1)這些文件添加到您的項目

UIWebView+YouTube.h 
UIWebView+YouTube.m 

2)啓動一個UIWebView例如

@property (strong, nonatomic) UIWebView *webView; 
@synthesize webView = _webView 

_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,212,172]; 
//set the X,Y origin of CGRect to where you want the webView to appear. 

_webView.delegate = self; 
[_webView loadYouTubeVideoID:@"gR8dO7Cln6M"]; 
[self.view addSubView:_webView]; 

祝你好運,希望這是你找什麼:)

Adam

0

m.youtube.com是一個巨大的Java Web應用程序,委託方法不會被調用,大概是因爲任何加載都是直接寫入UIWebView中的DOM。在工作中遇到這個問題,不知道修復,但可能有一種方法來注入與JS點擊處理程序的源代碼。