任何想法如何在
中实现appUrl = "http://dum:site2015@jobz.store.com/
if UIApplication.shared.canOpenURL(appUrl!){
if #available(iOS 10.0, *) {
UIApplication.shared.open(appUrl!)
}
并且在网址方案中我有jobz-com
事情就是这样,虽然我没有安装应用程序...而是在safari中打开网址...但是为什么不会因为我没有安装应用程序而得到错误?
答案 0 :(得分:1)
此功能不会检查已安装的应用。它只是告诉你它是否可以在safari中或通过应用程序打开该URL。 有效的URL将始终返回true,因为系统实际上可以在某处打开它。
根据Apple自己的文档
URL(统一资源定位符)。在运行时,系统会测试URL的方案,以确定是否有已安装的应用程序已注册以处理该方案。可以注册多个应用程序来处理方案。 https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl
Safari已注册处理任何有效的URL,因此如果使用该方案的应用程序不存在,则注册为阅读它的下一个应用程序是safari。
我认为如果安装了该应用,您只能打开一个开放的API。
始终确保您的网址以您需要的方案开头,而不是HTTP / S.
my-app://myurl/parameters
答案 1 :(得分:0)
请勿使用http://
或https://
打开应用。这些是针对网站的。使用这样的app url方案:
jobz-com://
提问者试图实现的另一种方法是使用Universal Link
。
以下是Apple's Official doc about Universal Links,您可以按照this medium article说明:
与URI方案进行深层链接的变通方法涉及到 使用传统的http://链接启动Web浏览器。这个链接 包含JavaScript重定向到自定义URI方案,即 由Web浏览器执行以启动应用程序。如果重定向尝试 失败,因为没有安装应用程序,JavaScript然后采取 用户访问App Store或Play商店。
而不是开放 Safari首先点击链接时,iOS会检查是否为Universal 已注册链接(AASA(apple-app-site-association)文件 应该在包含应用程序的包ID的域中 对于与之关联的域,应用程序应该打开的路径) 链接,然后检查是否安装了相应的应用程序。如果应用程序是 目前已安装,它将被打开。如果不是,Safari将会打开 并且http(s)链接将加载。