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



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

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

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

如果您再次返回应用程序,它将保留在应用程序中。

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

有人知道是什么原因造成的吗?

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

编辑 - 解决方案:

好的,这是我解决问题所必须做的事情(感谢 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;
}

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

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

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

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

viewWillAppear

并在每次将视图置于前面时重新加载带有链接的原始 HTML 页面。

最新更新