我正在使用适用于ios的Cordova / phonegap框架在xcode中构建一个应用程序,它显示了一些嵌入了youtube播放器代码的html。当用户点击这个youtube播放器时,iOS似乎会将用户重定向到youtube应用。在cordova 1.5.0中,以下代码有效,但在1.6.1中似乎没有。任何想法为什么或需要改变什么来让它发挥作用?
停止youtube开放的代码和指向自我行为的链接
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
// Intercept the external http requests and forward to Safari.app
// Otherwise forward to the PhoneGap WebView
NSString* urlString = [url absoluteString];
if([urlString rangeOfString:@"http://www.youtube.com/embed"].location != NSNotFound) {
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}
else if (([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"])) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
else {
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}
}
答案 0 :(得分:0)
看看http://apiblog.youtube.com/2009/02/youtube-apis-iphone-cool-mobile-apps.html 这可能有所帮助。
它说这样做:
NSString *htmlString = @"<html><head>
<meta name = \"viewport\" content = \"initial-scale = 1.0, user-scalable = no, width = 212\"/></head>
<body style=\"background:#F00;margin-top:0px;margin-left:0px\">
<div><object width=\"212\" height=\"172\">
<param name=\"movie\" value=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"></param>
<param name=\"wmode\" value=\"transparent\"></param>
<embed src=\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos&c=ytapi-my-clientID&d=nGF83uyVrg8eD4rfEkk22mDOl3qUImVMV6ramM\"
type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"212\" height=\"172\"></embed>
</object></div></body></html>";
[webView loadHTMLString:htmlString baseURL:[NSURL URLWithString:@"http://www.your-url.com"]];
答案 1 :(得分:0)
我会在方法的开头放入url登录,然后在if / elseif / else的每个子句中放入一个log语句,这样你就可以看到截获的url以及每个url的方法
也许youtube请求的字符串与硬编码的“http://www.youtube.com/embed”不匹配?值得一看。