2012-07-14 121 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点击处理程序的源代码。