如何检查应用程序是否已安装在手机中

我不知道如何检查手机上是否安装了应用程序! 或者在安装App时,打开应用程序,否则打开Appstore链接以下载应用程序。 我正在使用swift 3 。 我想使用应用名称包标识符来做到这一点。 谢谢!

func openApp(appName:String) { let appName = "instagram" let appScheme = "/(appName)://app" let appUrl = URL(string: appScheme) if UIApplication.shared.canOpenURL(appUrl! as URL) { UIApplication.shared.open(appUrl!) } else { print("App not installed") } } 

在其他答案和他们的评论之间,我得到的印象是提问者希望能够看到是否安装了任何给定的应用程序。

从iOS 9.0开始,这是不可能的。

在允许使用canOpenURL:之前,iOS 9及更高版本的应用必须在Info.plist中包含请求的URL方案列表canOpenURL: 。 这是为了保护用户隐私,因为广告商以可侵权的方式滥用此function。 (有关这些更改的更多详细信息,请参阅此优秀post 。)

当然,该列表是静态的,在构建时间或提交到App Store后无法更改。 如果Apple不喜欢你选择的那些,他们有权拒绝它。

我担心你在iOS 9.0及更高版本之内无法满足要求。

编辑:我还想明确一个应用程序的URL方案可能不一定与其名称完全匹配。 (这更像是一个命名错误的常量问题而不是function问题。)曾经有一个已知的URI方案的巨大列表,每个都有文档,但是非常恰当和恰当,似乎托管它的wiki已经关闭了。

这对我有用(Swift 3.0)

应提供以下两个输入:

  1. :您要打开的应用的URL方案
  2. :App Itunesurl

     func openApp() { let appURL = NSURL(string: "") if UIApplication.shared.canOpenURL(appURL as! URL) { print("Opening App...") }else { UIApplication.shared.openURL(NSURL(string: "")! as URL) } } 

首先转到info.plist,添加LSApplicationQueriesSchemes添加项目并将instagram放在该项目上。 现在这段代码将完美运行。

 let appName = "instagram" let appScheme = "\(appName)://" let appUrl = URL(string: appScheme) if UIApplication.shared.canOpenURL(appUrl! as URL) { UIApplication.shared.open(appUrl!) } else { print("App not installed") } 

Swift 4.1。 一个开发人员可以在AppStore上拥有多个应用程序。 因此,我需要检查用户是否已经由同一个开发人员安装了其他应用程序。 我有其他应用程序的Bundle ID。 虽然您可以使用Appname而不是Bundle Id 。 所以我按照以下步骤操作。

  1. 在当前的应用程序中,在info.plist文件中添加类型为Array的LSApplicationQueriesSchemes键。 在您的应用中输入您要打开的应用包ID或应用的Appname。

    在此处输入图像描述

  2. 其他应用程序应该在该应用程序URL方案中具有其包ID或Appname条目。

在此处输入图像描述

  1. 在您当前的应用程序中,检查是否已安装在iPhone中的应用程序,并且可以相应地打开。
 let app = UIApplication.shared let bundleID = "some.Bundle.Id://" if app.canOpenURL(URL(string: bundleID)!) { print("App is install and can be opened") let url = URL(string:bundleID)! if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(url) } } else { print("App in not installed. Go to AppStore") } 
  1. 您也可以从Safari浏览器进行测试。 只需在搜索栏中键入以下内容即可
 URL_scheme:// or Bundle_Id:// 

如果安装了应用程序,它将显示带有Appname的警报以在应用程序中打开它。

在此处输入图像描述