如何检测iOS应用程序浏览器中的链接是否会启动应用程序商店?
我正在构建一个iOS应用程序,它有一个应用程序内的web浏览器 其中一项功能是检测链接打开时是否会退出Tweetbot。以下是点击应用商店链接时发生的情况的屏幕截图: 我将如何检测应用程序是否由于打开链接而即将关闭 更新:我想这个问题还不够清楚:我知道如何检测iOS应用程序浏览器中的链接是否会启动应用程序商店?,ios,iphone,nsurl,nsurlrequest,url-scheme,Ios,Iphone,Nsurl,Nsurlrequest,Url Scheme,我正在构建一个iOS应用程序,它有一个应用程序内的web浏览器 其中一项功能是检测链接打开时是否会退出Tweetbot。以下是点击应用商店链接时发生的情况的屏幕截图: 我将如何检测应用程序是否由于打开链接而即将关闭 更新:我想这个问题还不够清楚:我知道UIWebViewDelegate方法,以及[[UIApplication-sharedApplication]openURL:url]位 我想弄清楚的不是如何打开URL或如何知道web视图是否正在打开URL,而是如何评估URL以确定它是否会导致
UIWebViewDelegate
方法,以及[[UIApplication-sharedApplication]openURL:url]
位
我想弄清楚的不是如何打开URL或如何知道web视图是否正在打开URL,而是如何评估URL以确定它是否会导致在不首先打开URL的情况下离开应用程序?
我是否在监视
itms://
url?有没有一种简单明了的方法可以知道一个给定的URL是否会退出应用程序,而不仅仅是itms://
URL?我不知道另一个应用程序正在做什么,但很可能它们实现了UIWebViewDelegate
方法webView:shouldStartLoadWithRequest:navigationType:
检查类型是否为单击的
UIWebViewNavigationTypeLink
,然后检查请求的URL
。如果URL方案是自定义方案,则将启动另一个应用程序。除了@rmaddy:
在UIWebView中,检测和拦截链接的唯一解决方案是webView:shouldStartingWithRequest:navigaitonType
:并检查navigationType是否是UIWebViewNavigationTypeLinkClicked
,正如@rmaddy所说
您可能会想到并试图找到以下内容,但它不会拦截UIWebView中的链接:
//在代码中:
[[UIApplication sharedApplication] openURL:myURL];
//在应用程序代理中:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
{
// Intercept links from openURL and links from other components like UITextView - present custom alert and on the alert delegate either cancel or redirect to the link
}
这听起来完全合理——我还想看看是否有一种方法不需要使用UIWebViewDelegate就可以做到这一点,但这完全可行。非常感谢。为什么不在web视图中使用委托?它就是用来做这样的事情的。请看我上面的更新-我知道UIWebViewDelegate是我获取URL的地方,但我的问题不是这个-问题是如何评估该URL并确定它是否会导致应用程序退出。谢谢查看URL的方案
。如果是http或https URL,则web视图通常只加载新页面。如果是文件URL,则可能会打开该文件。如果是mailto URL,则可能会打开邮件应用程序。几乎任何其他方案都可能用于另一个应用程序。您可以使用UIApplication canOpenURL:
查看URL是否可以打开。谢谢-我已经更新了问题,以便更清楚地说明:我完全知道如何打开URL,但我的主要问题更多地是关于拦截代码是什么样子的?谢谢