web-dev-qa-db-fra.com

Comment vérifier que l'application est installée ou non sur le téléphone

Je ne sais pas comment vérifier si l'application est installée ou non sur le téléphone! Ou, lorsque l'application est installée, ouvrez l'application, sinon ouvrez le lien Appstore pour télécharger l'application. J'utilise Swift 3 . Je veux le faire en utilisant nom de l'application ou identifiant de l'ensemble . Merci!

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

}
9
torinpitchers

Entre les autres réponses et leurs commentaires, j'ai l'impression que le demandeur veut être capable de voir si une application donnée est installée.

À partir de iOS 9.0, cela n’est pas possible.

Les applications pour iOS 9 et versions ultérieures doivent avoir une liste des modèles d'URL demandés dans Info.plist avant de pouvoir utiliser canOpenURL:. Ceci afin de protéger la vie privée des utilisateurs, car les annonceurs ont abusé de cette fonctionnalité de manière invasive. (Voir cet excellent article pour plus de détails sur ces changements.)

Bien entendu, cette liste est statique et ne peut pas être modifiée après la génération ou l'envoi à l'App Store. Si Apple n'aime pas ceux que vous avez choisis, ils ont parfaitement le droit de le refuser.

Je crains que ce que vous demandez ne soit pas possible dans la mesure du possible pour iOS 9.0 et les versions ultérieures.

Edit: Je tiens également à préciser que le schéma d'URL d'une application ne correspond pas nécessairement à son nom. (Il s’agit plus d’une constante mal nommée que d’une question fonctionnelle.) Il existait auparavant une liste géante de schémas d’URI connus avec une documentation pour chacun, mais de manière assez poignante et appropriée, il semble que le wiki qui l’héberge a été fermé .

4
Jonathan Thornton

Cela a fonctionné pour moi (Swift 3.0)

Ci-dessous deux entrées doivent être fournies:

  1. <APP URL SCEHME>: le schéma d'URL de l'application que vous souhaitez ouvrir
  2. <YOUR APP URL>: l'URL iTunes de l'application

    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)
    
            }
    }
    
1
Imad Ali

Swift 4.1. Un développeur peut avoir plusieurs applications sur l'AppStore. Donc, je dois vérifier si l'utilisateur a installé d'autres applications ou non par le même développeur. J'ai eu le Bundle ID d'autres applications. Bien que vous puissiez utiliser Appname au lieu de Bundle Id. J'ai donc suivi les étapes suivantes.

  1. Dans votre application actuelle, ajoutez la clé LSApplicationQueriesSchemes de type Array dans votre fichier info.plist. Saisissez l’identifiant du bundle ou le nom de l’application de l’application que vous souhaitez ouvrir à partir de votre application.

     enter image description here

  2. Les autres applications doivent avoir leur identifiant de bundle ou leur entrée Appname dans ce schéma d'URL d'application.

 enter image description here

  1. Dans votre application actuelle, vérifiez si cette application est installée sur l'iPhone ou non et peut s'ouvrir en conséquence.
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. Vous pouvez également le tester depuis le navigateur Safari. Il suffit de taper ce qui suit dans la barre de recherche 
URL_scheme://  or Bundle_Id://

Si l'application est installée, elle affichera une alerte avec Appname pour l'ouvrir dans l'application.

 enter image description here

1
GSK

allez tout d'abord sur info.plist, ajoutez LSApplicationQueriesSchemes, ajoutez un élément et placez instagram sur cet élément. Maintenant, ce code fonctionnera parfaitement.

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")
}
0
Mir Ashraf