iOS:阻止UIWebView中的其他域

iOS:阻止UIWebView中的其他域,ios,objective-c,uiwebview,restriction,Ios,Objective C,Uiwebview,Restriction,因此,我正在编写我的第一个应用程序,并且有一个关于在UIWebView中阻止其他域的快速问题。我想将导航限制在我的网站上,仅限于我的合作伙伴网站。所以,如果我的网站上碰巧有一个链接指向谷歌,我希望出现一条弹出消息,说“你不能去那里!”或其他什么。我不知道该怎么办。我以前从未使用过UIWebView,对一般编程来说我还是个新手。 非常感谢您的帮助,谢谢 您需要使控制器类成为web视图的委托。然后在控制器中实现此方法: - (BOOL)webView:(UIWebView *)webView sho

因此,我正在编写我的第一个应用程序,并且有一个关于在UIWebView中阻止其他域的快速问题。我想将导航限制在我的网站上,仅限于我的合作伙伴网站。所以,如果我的网站上碰巧有一个链接指向谷歌,我希望出现一条弹出消息,说“你不能去那里!”或其他什么。我不知道该怎么办。我以前从未使用过UIWebView,对一般编程来说我还是个新手。
非常感谢您的帮助,谢谢

您需要使控制器类成为web视图的委托。然后在控制器中实现此方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在此方法中,您可以检查
请求
,查看其
URL
是否可接受。如果是,则
返回YES
,如果不是,则显示您的警报并
返回NO


要测试域,您可以从
请求的
URL
请求
主机
,您需要将控制器类设置为web视图的代理。然后在控制器中实现此方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *host = [request.URL host];
    if ([host isEqualToString:"oralb.com"] || [host isEqualToString:"other.com"]) {
        // Add any of your own domains in the above line
        return YES;
    }

    return NO;
}
在此方法中,您可以检查
请求
,查看其
URL
是否可接受。如果是,则
返回YES
,如果不是,则显示您的警报并
返回NO


要测试域,您可以从
请求的
URL
请求
主机
,太棒了,谢谢!此外,这是否仍然允许我浏览整个网站或仅浏览主页?对于初学者的问题,很抱歉,非常感谢!如果仅验证主机,则该主机上的所有页面都将可用。你有完整的URL路径,所以你可以做更具体的过滤,如果你需要的话。太棒了,谢谢你!此外,这是否仍然允许我浏览整个网站或仅浏览主页?对于初学者的问题,很抱歉,非常感谢!如果仅验证主机,则该主机上的所有页面都将可用。您拥有完整的URL路径,因此可以在需要时执行更具体的筛选。BaseURL==“oralb.com”不是定义字符串或比较字符串的有效方法。您应该使用compare:或IsequalString:或hasPrefix:@Wain-谢谢。错过了。请在设置主机后立即添加断点,然后逐步执行。确保主机是正确的值。除了主机之外,您可能还需要使用其他方法。另外,为确保不会加载任何内容,请对所有内容都返回NO。在记录主机时,您需要确保使用的字符串是匹配的,因为使用isEqualToString:method.BaseURL==“oralb.com”不是定义字符串或比较字符串的有效方法。您应该使用compare:或IsequalString:或hasPrefix:@Wain-谢谢。错过了。请在设置主机后立即添加断点,然后逐步执行。确保主机是正确的值。除了主机之外,您可能还需要使用其他方法。另外,对所有内容都返回NO,以确保不会加载任何内容。记录主机时,在使用isEqualToString:方法时,需要确保使用的字符串匹配。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSString *host = [request.URL host];
    if ([host isEqualToString:"oralb.com"] || [host isEqualToString:"other.com"]) {
        // Add any of your own domains in the above line
        return YES;
    }

    return NO;
}