2009-11-19 66 views
1

我们有一个wifi热点,显示服务条款页面,才允许人们开始使用它。如何让iPhone热点登录UIWebView在Safari中打开链接?

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

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

有没有另一种方式让链接在Safari中打开,而不是在UIWebView中?我试过JavaScript,我试过将目标设置为_blank。

编辑:在阅读一些回应后,它似乎是唯一的方法来做到这一点是设置UIWebView委托。我不认为这是一种选择,因为我不是启动UIWebView的人。

回答

0

使用的UIApplication的openURL方法:

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

这方面的一个例子苹果可用作LaunchMe样品的一部分。

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无法控制 - 也许你通过设置代表比你想象的要多?

+0

'BOOL'值为'YES'和'NO',不是'true'和'false'。 – 2010-10-11 23:05:41

1

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

如果它在检查重定向时报告为Mobile Safari,那么另一种方法是找出它尝试去哪个站点 - 也许是apple.com?然后,在服务器端,第一次加载一个不同的 URL,重定向到您的链接。然而,只有当用户打开Mobile Safari时,这才会起作用。

除此之外,我认为你要做的是超出当前iPhone OS的范围。我建议在苹果公司bugreport.apple.com处提交‘功能请求’。

相关问题