如何让iPhone热点登录UIWebView在Safari中打开一个链接?

时间:2009-11-19 18:27:32

标签: iphone

我们有一个wifi热点,在允许人们开始使用之前显示服务条款页面。

接受后,会显示一个包含少量链接的新页面。我希望在Safari中打开这些链接,而不是在UIWebView中打开。

我知道有一种方法可以编程UIWebView来打开Safari中的链接,但这不是一个选项,因为这是用于登录wifi热点而不是自定义应用程序的默认UIWebView。

是否有其他方法可以在Safari中打开链接,而不是在UIWebView中打开?我尝试过javascript,我尝试将目标设置为_blank。

编辑:在阅读了一些回复之后,似乎唯一的方法是设置UIWebView委托。我不认为这是一个选项,因为我不是启动UIWebView的人。

3 个答案:

答案 0 :(得分:1)

我知道如何执行此操作的唯一方法是设置UIWebView委托并提供如下内容:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (navigationType == UIWebViewNavigationTypeLinkClicked &&
        [request.URL isFileURL] == false)
    {
        [[UIApplication sharedApplication] openURL:request.URL];

        return NO;
    }

    return YES;
}

上述代码将导致Safari打开用户点击的链接。我知道你说你对这个UIWebView几乎无法控制 - 也许你通过设置委托比你想象的更多?

答案 1 :(得分:1)

当iPhone连接到网络(至少使用3.0版)时,它会检查它是否被重定向到登录页面。如果是的话,它就会通过身份验证和UIWebView中的内容来实现。您是否检查过它正在使用的浏览器报告的内容?如果它不是Mobile Safari,那么当有人使用Mobile Safari首次连接时,您可以在服务器端执行某些操作。

如果它在检查重定向时报告为Mobile Safari,那么另一种选择是弄清楚它试图去哪个网站 - 也许是apple.com?然后,在服务器端,第一次加载不同的 URL时,重定向到您的链接。但这仅在用户打开Mobile Safari时才有效。

除此之外,我认为您要求做的事情超出了当前iPhone OS的范围。我建议在bugreport.apple.com向Apple提交“功能请求”。

答案 2 :(得分:0)

使用UIApplication的openURL方法:

NSURL *url = [[NSURL alloc] initWithString:@"http://example.com"];    
[[UIApplication sharedApplication] openURL:url];
[url release];

Apple的一个例子是LaunchMe样本的一部分。