如何以编程方式检查和打开现有应用程序 - Swift 4
Posted
技术标签:
【中文标题】如何以编程方式检查和打开现有应用程序 - Swift 4【英文标题】:How to Programmatically check and open an existing app in - Swift 4 【发布时间】:2018-01-03 07:00:14 【问题描述】:我想检查我的手机中是否安装了应用程序。如果它已经安装,我想启动它。如果没有安装,我需要打开 Appstore 链接。
我可以从 url 打开 Appstore,
https://itunes.apple.com/us/app/stack-ar/id1269638287?mt=8
使用下面的代码,
let urlString = "https://itunes.apple.com/us/app/stack-ar/id1269638287?mt=8"
UIApplication.shared.open(URL(string: urlString)!, options: [:]) (success) in
如果已安装,如何打开应用程序?
【问题讨论】:
看到这个kitefaster.com/2016/07/13/how-to-open-ios-app-with-custom-url How to open fb and instagram app by tapping on button in Swift的可能重复 检查这个 -> ***.com/questions/433907/… 有没有办法从appstore中找到已安装的应用程序包含URLScheme。 【参考方案1】:要从您的应用程序打开另一个应用程序,目标应用程序需要实现 URL 方案。一些应用程序记录了它们的 URL 方案,而另一些则没有。您可能需要询问目标应用程序的开发人员或查看Info.plist
文件。
如果应用没有实现 URL Scheme,则无法启动它(据我所知)。
如果它确实实现了 URL 方案,您需要在您的应用中将该方案列入白名单。您可以通过将 LSApplicationQueriesSchemes
添加到您的 Info.plist
来做到这一点,如下所示:
图片显示了与 Facebook 和 Twitter 对应的 URL Schemes 的白名单。根据您要打开的应用调整此设置。
完成后,您可以使用UIApplication.sharedApplication().canOpenURL(...)
检查应用是否已安装,并使用UIApplication.sharedApplication().openURL(...)
打开目标应用。
我还想建议使用SKStoreProductViewController
在 App Store 中显示应用,而不是打开 Safari。这样就可以直接在您的应用中呈现类似 App Store 的视图,而无需离开它。
【讨论】:
【参考方案2】:使用 Url 方案打开第三方应用程序。
var profile = "instagram://user?username=johndoe"
var instagramUrl = NSURL(string: profile)
if UIApplication.sharedApplication().canOpenURL(instagramUrl!)
UIApplication.sharedApplication().openURL(instagramUrl!)
else
//redirect to safari because the user doesn't have Instagram
UIApplication.sharedApplication().openURL(NSURL(string: "http://instagram.com/")!)
【讨论】:
这不是一个正确的答案。 网址方案只是从另一个应用程序打开第三方应用程序的一种方式。 除非您将所需的应用列入白名单,否则它不会起作用。否则 canOpenURL(:) 将始终为假。你可以在这里找到更多。 developer.apple.com/documentation/uikit/uiapplication/… 如何获取其他第三方应用的方案? 一个应用程序甚至可能没有方案。要获得它,请询问开发人员或失败,您可以窥探它,但如果开发人员尚未发布它,那是一件非常偷偷摸摸的事情。这是您所说的特定应用吗?以上是关于如何以编程方式检查和打开现有应用程序 - Swift 4的主要内容,如果未能解决你的问题,请参考以下文章
Android:打开现有 PDF 文件检查并填写复选框字段,然后保存文档的新版本
如何以编程方式在 COM+ 应用程序中检查“允许 IIS 内在属性”?