如何以编程方式检查和打开现有应用程序 - 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 文件检查并填写复选框字段,然后保存文档的新版本

以编程方式检查 JDBC 中的打开连接

如何以编程方式在 COM+ 应用程序中检查“允许 IIS 内在属性”?

如何以编程方式找出打开了哪种位置模式?

如何以编程方式检查 Android 中是不是安装了应用程序?

如何以编程方式检查应用商店地区/国家/地区?