Ios 尝试使用rangeOfString作为youtube视频的url

Ios 尝试使用rangeOfString作为youtube视频的url,ios,objective-c,string,webview,nsstring,Ios,Objective C,String,Webview,Nsstring,我需要的应用程序识别,如果它是一个youtube视频嵌入,然后在应用程序webView 下面是我现在使用的代码: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; { NSString *urlString = request.URL.absoluteStrin

我需要的应用程序识别,如果它是一个youtube视频嵌入,然后在应用程序webView

下面是我现在使用的代码:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
{
NSString *urlString = request.URL.absoluteString;
NSString *youtube;

youtube = @"youtube";

if ([urlString rangeOfString:youtube options: NSCaseInsensitiveSearch].location != NSNotFound){
    return YES;
}
[[UIApplication sharedApplication] openURL:request.URL];
return NO;
}
这在大多数情况下都是有效的,因为大多数youtube链接都是作为嵌入视频直接传输到网页上的。然而,我检查是否从youtube选择了个人资料页面或其他页面,这仍然会在应用程序中打开,因为我的应用程序没有后退按钮(html页面中的按钮)。因此,任何与视频无关的链接都将导致无法返回。 我尝试使用@“youtube.com/watch”@“/watch?”@“watch?”作为范围字符串,但只有youtube起作用

例如: 这是一个youtube视频url:data url=”http://youtube.com/watch?feature=player_detailpage&v=Ke1Y3P9D0Bc“(应用程序内视图良好)

dara url=“youtube.com”(失败,仍在应用程序视图中)

我想知道我是不是用错误的格式存储了字符串,字符串中不支持符号? 或者还有另一种方式,比如
urlString-rangeOfString:youtube&&@“watch”

谢谢,非常感谢。

您当然可以使用

if ([urlString rangeOfString:youtube options: NSCaseInsensitiveSearch].location != NSNotFound && [urlString rangeOfString:@"watch" options: NSCaseInsensitiveSearch].location != NSNotFound)

我不知道这是否能满足您的需求,但它应该作为一个有效的if语句工作。

tks,我以前尝试过使用这个语句,结果发现它与embed之间存在NSUrl路径问题。tks把它修好了。
NSURL *myURL = [NSURL URLWithString:@"http://www.youtube.com/watch?feature=player_detailpage&v=Ke1Y3P9D0Bc"];
NSString *host = myURL.host;
NSString *path = myURL.path;
NSLog(@"%@", host); // Output: www.youtube.com
NSLog(@"%@", path); // Output: /watch
NSLog(@"%@", myURL.query); // Output: feature=player_detailpage&v=Ke1Y3P9D0Bc
if (NSMaxRange([host rangeOfString:@"youtube.com" options:(NSCaseInsensitiveSearch|NSBackwardsSearch)]) == host.length &&
    [path.lowercaseString isEqualToString:@"/watch"]) {
    NSLog(@"This is a youtube video.");
}