Html 从目标C iOS中的URL获取用户指定的信息
目前我正在使用UIWebview,它显示用户提供的web内容。在此内容中将有指向其他web内容的链接,我需要决定是在safari中还是在UIWebview中打开链接 我目前的解决方案是在html中的URL中添加查询字符串,例如Html 从目标C iOS中的URL获取用户指定的信息,html,ios,uiwebview,hyperlink,Html,Ios,Uiwebview,Hyperlink,目前我正在使用UIWebview,它显示用户提供的web内容。在此内容中将有指向其他web内容的链接,我需要决定是在safari中还是在UIWebview中打开链接 我目前的解决方案是在html中的URL中添加查询字符串,例如 当用户按下链接时,UIViewController中的以下方法决定如何打开链接 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigati
当用户按下链接时,UIViewController中的以下方法决定如何打开链接
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [request URL];
NSLog(@"%@",url);
NSLog(@"%@",[url scheme]);
NSLog(@"%@",[url user]);
NSLog(@"%@",[url query]);
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
if ([[url query]isEqualToString:@"OutOfAppApp"]) {
NSLog(@"go out");
[[UIApplication sharedApplication] openURL:url];
return NO;
}
else if([[url query]isEqualToString:@"StayInApp"])
{
return YES;
}
}
return YES;
}
我在web开发方面没有太多经验,因此看不到使用这种方法的后果。这是一种有效的方法还是我应该使用另一种方法
问候
编辑:
现在,我提出了另一种使用自定义URL方案的方法,但我仍然希望对这是否是一种有效的解决方案发表评论:)
我在链接中添加了前缀,如
当用户按下链接时,应用程序会检查前缀并决定是在应用程序中还是在safari中启动url的其余部分。这是通过以下方法完成的:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *url = [request URL];
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
if ([[url scheme]isEqualToString:@"InAPP"]) {
NSLog(@"go in");
NSURLRequest *req=[NSURLRequest requestWithURL:[self removeExtensionFromURL:url]];
[[self browserView] loadRequest:req];
return NO;
}
else if([[url scheme]isEqualToString:@"OutAPP"])
{
NSLog(@"go out");
[[UIApplication sharedApplication] openURL:[self removeExtensionFromURL:url]];
return NO;
}
}
return YES;
}
-(NSURL*)removeExtensionFromURL:(NSURL*)url
{
NSMutableString *urlString=[NSString stringWithFormat:@"%@",url];
NSString *newURLString;
if ([[url scheme]isEqualToString:@"InAPP"]) {
newURLString = [urlString stringByReplacingOccurrencesOfString:@"InAPP:" withString:@""];
}
else if([[url scheme]isEqualToString:@"OutAPP"])
{
newURLString = [urlString stringByReplacingOccurrencesOfString:@"OutAPP:" withString:@""];
}
return [NSURL URLWithString:newURLString];
}
是否可以为此使用自定义URL方案?请看,我需要至少两种不同的方案来决定是在应用程序中还是在safari中,所以我不相信这是实现目标的方法。实际上,我现在正在使用的方案是,我将InAPP附加到链接,例如target=_blank>访问W3Schools。用户按下链接后,应用程序会根据方案决定要做什么。