1

如果我在 Safari 中打开这个 url,iOS 会检查我是否安装了这个应用程序。如果是 - 应用程序将启动,否则我将被重定向到 AppStore 应用程序。

是否可以UIWebView做同样的事情?关键是系统会检查应用程序安装的天气并已CFBundleURLTypes注册响应。

编辑:对不起,我在识别问题时错了。实际上还有另一个链接重定向到为应用程序注册的直接(本地)链接。我现在抓住了这个

-(BOOL) webView:(UIWebView *)inWeb 
    shouldStartLoadWithRequest:(NSURLRequest *)inRequest 
    navigationType:(UIWebViewNavigationType)inType

并打电话

[[UIApplication sharedApplication] openURL:url]
4

2 回答 2

3

如果UIApplication openURL你想要什么(在 App Store 中打开应用程序页面,或者如果安装了应用程序则打开该应用程序;我想它会这样做)你可以通过以下方式“窃取”UIWebView 中的 url 打开事件:

// myWebView will be your initialized web view
[myWebView setDelegate:self];

// implement this method in the owning class
-(BOOL) webView:(UIWebView *)inWeb 
 shouldStartLoadWithRequest:(NSURLRequest *)inRequest 
             navigationType:(UIWebViewNavigationType)inType 
{
    if (inType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:[inRequest URL]];
        return NO;
    }

    return YES;
}

这将打开在 Safari / App Store / 默认处理应用程序的 Web 视图中单击的所有链接。如果您只想以这种方式打开 iTunes 链接,您可能希望在此方法中实现一些 URL 解析并仅重定向这些链接。如果您返回YES,将调用默认处理程序,即链接将在 Web 视图中打开。

于 2012-04-06T09:22:57.787 回答
1

您描述的行为不是它目前在 iOS 5.1 上的工作方式

再次点击 iTMS 链接仍会启动 App Store。

iOS 5.1 上的应用商店


这可以帮助您检测是否已安装应用程序

https://stackoverflow.com/a/5746603/515359

于 2012-04-06T09:39:26.277 回答