iPhone:UIWebView打开外部浏览器后,返回应用程序再次打开它

时间:2012-05-15 22:50:43

标签: iphone objective-c ios cocoa-touch ios4

我有一个UIWebView,它会加载一个HTML页面,其中包含指向App Store(<a herf="http://itunes/bla/bla/bla">类型链接)的链接。

单击链接,打开外部Safari,然后打开外部App Store应用程序并成功转到正确的页面。

如果您然后单击主页按钮并返回跳板并再次单击应用程序,它将暂时打开显示的UIWebView,然后再次跳转到外部Safari和外部App Store应用程序。

如果你再次回到应用程序,它会留在应用程序中。

所以发生的事情是从UIWebView HTML页面打开外部浏览器链接后返回应用程序,然后再次跳回到同一链接。

任何人都有任何想法可能导致这个?

使用Xcode 4.2.1,它发生在模拟器和实际设备上(iOS 1的iPad 1)。

编辑 - 解决方案:

好的,这就是我必须要解决的问题(感谢Ben的回复,让我看到了正确的区域):

这是我原来的方法:

- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (didLoad) { //Do not jump to URL when view first loads
        return YES;
    }

    [[UIApplication sharedApplication] openURL:[request URL]];
    return YES;
}

这是我的固定方法,不会继续跳转到URL:

- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (didShowURL) { //Do not jump to URL when returning to app
        didShowURL = 0;
        return NO;
    }

    if (didLoad) { //Do not jump to URL when view first loads
       return YES;
    }

    didShowURL = 1;
    [[UIApplication sharedApplication] openURL:[request URL]];
    return YES;
}

2 个答案:

答案 0 :(得分:2)

我建议您使用itms-apps://协议作为链接。这将直接将用户发送到App Store中的应用程序,而无需重定向。

NSURL *appStoreLink = [NSURL URLWithString:@"itms-apps://itunes.apple.com/us/app/instagram/id389801252?mt=8"];
[[UIApplication sharedApplication] openURL:appStoreLink];

答案 1 :(得分:0)

您的网页视图正在重新加载到其最后一页(应用商店页面),并会自动将用户重定向。您只需要确保在重新加载应用时,它不会再次尝试加载应用商店链接。

根据您的应用设置,您可以使用

viewWillAppear

每次将视图放到前面时,使用链接重新加载原始HTML页面。