如果我在Safari iOS中打开this url,请检查我是否安装了此应用。如果是 - 应用程序将启动,否则我将被重定向到AppStore应用程序。
是否可以让UIWebView
做同样的事情?
关键是系统检查已安装的应用程序,并已注册CFBundleURLTypes
进行响应。
编辑: 对不起,伙计们我发现问题是错误的。实际上有另一个链接重定向到为应用注册的直接(本地)链接。我现在抓住这个
-(BOOL) webView:(UIWebView *)inWeb
shouldStartLoadWithRequest:(NSURLRequest *)inRequest
navigationType:(UIWebViewNavigationType)inType
并致电
[[UIApplication sharedApplication] openURL:url]
答案 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。
这可以帮助您检测是否已安装某个应用