如果已安装应用程序,请打开iTunes链接到UIWebView中的应用程序

时间:2012-04-06 08:33:41

标签: iphone ios uiwebview itunes

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

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

编辑: 对不起,伙计们我发现问题是错误的。实际上有另一个链接重定向到为应用注册的直接(本地)链接。我现在抓住这个

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

并致电

[[UIApplication sharedApplication] openURL:url]

2 个答案:

答案 0 :(得分:3)

如果UIApplication openURL符合您的要求(在App Store中打开应用页面或打开应用程序,如果已安装;我猜它会这样做)您可以在UIWebView中“窃取”网址开启事件以下方式:

// 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视图中打开。

答案 1 :(得分:1)

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

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

App Store on iOS 5.1


这可以帮助您检测是否已安装某个应用

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