如何在手机中安装或不安装应用程序

时间:2017-01-09 09:58:38

标签: ios swift xcode

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

6 个答案:

答案 0 :(得分:12)

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")
    }

}

答案 1 :(得分:4)

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

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

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

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

我担心你在iOS 9.0及更高版本之内无法提出的问题是不可能的。

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

答案 2 :(得分:1)

这对我有用(Swift 3.0)

应提供以下两个输入:

  1. <YOUR APP URL>:您要打开的应用的网址方案
  2. func openApp() { let appURL = NSURL(string: "<APP URL SCHEME>") if UIApplication.shared.canOpenURL(appURL as! URL) { print("Opening App...") }else { UIApplication.shared.openURL(NSURL(string: "<YOUR APP URL>")! as URL) } } :App Itunes网址

    .form-inline {
        margin: 0 -3px;
    }
    
    .form-inline .form-group label,
    .form-inline .form-group input,
    .form-inline .form-group select {
        margin: 0 3px;
    }
    

答案 3 :(得分:1)

迅速4.1。一个开发人员可以在AppStore上拥有多个应用程序。因此,我需要检查用户是否已由同一开发人员安装了其他应用程序。我有其他应用程序的捆绑ID。尽管您可以使用 Appname 代替 Bundle ID 。因此,我按照以下步骤操作。

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

    enter image description here

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

enter image description here

  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://

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

enter image description here

答案 4 :(得分:0)

首先转到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")
}

答案 5 :(得分:0)

研究了这么多答案之后,我正在编写一个通用代码,它将对新用户有所帮助。如果您有两个移动应用程序,分别为App1和App2,则要在App2中检查是否已在其设备中安装了App1,请参见以下代码。

  1. 在App1中将此属性添加到info.plist文件中

    <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.companyName.App1</string> <key>CFBundleURLSchemes</key> <array> <string>App1</string> </array> </dict> </array>

  2. 在App2中将此属性添加到info.plist文件中

    <key>LSApplicationQueriesSchemes</key> <array> <string>App1</string> </array>

在App2中编写检查手机上是否已安装应用程序的方法!或在安装应用程序后,打开该应用程序,否则打开“​​ Appstore”链接以按以下方式下载该应用程序。

func checkAndOpenApp(){
    let app = UIApplication.shared
    let appScheme = "App1://app"
    if app.canOpenURL(URL(string: appScheme)!) {
        print("App is install and can be opened")
        let url = URL(string:appScheme)!
        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")
        if let url = URL(string: "https://apps.apple.com/us/app/App1/id1445847940?ls=1"),
            UIApplication.shared.canOpenURL(url)
        {
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
            } else {
                UIApplication.shared.openURL(url)
            }
        }
    }
}

我希望它能对某些人有所帮助。