1

我有一个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;
}
4

2 回答 2

2

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

NSURL *appStoreLink = [NSURL URLWithString:@"itms-apps://itunes.apple.com/us/app/instagram/id389801252?mt=8"];
[[UIApplication sharedApplication] openURL:appStoreLink];
于 2012-05-16T02:29:40.660 回答
0

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

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

viewWillAppear

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

于 2012-05-15T22:59:12.047 回答