Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测iOS应用程序浏览器中的链接是否会启动应用程序商店?_Ios_Iphone_Nsurl_Nsurlrequest_Url Scheme - Fatal编程技术网

如何检测iOS应用程序浏览器中的链接是否会启动应用程序商店?

如何检测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以确定它是否会导致

我正在构建一个iOS应用程序,它有一个应用程序内的web浏览器

其中一项功能是检测链接打开时是否会退出Tweetbot。以下是点击应用商店链接时发生的情况的屏幕截图:

我将如何检测应用程序是否由于打开链接而即将关闭

更新:我想这个问题还不够清楚:我知道
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,但我的主要问题更多地是关于拦截代码是什么样子的?谢谢