48 votes

Lancer l'application OU l'App Store depuis Safari ?

Je sais déjà comment lancer une application depuis Safari, mais est-il possible de vérifier si l'application est installée avant de la lancer ? Je pense lancer l'App Store si l'application n'est pas actuellement installée sur l'iPhone.

11voto

William Hall Points 41

Cela a fonctionné pour moi avec une situation similaire: dans laquelle je voulais ouvrir l'application gmaps si elle était prise en charge - sinon, accédez directement au site gmap.

 function mapLink(addy) {     
  addy = encodeURIComponent(addy);

  var fallback = 'http://maps.google.com/?q=' + addy
  , link = 'comgooglemaps://?q=' + addy;

  try {
    document.location = link;
  } catch(err) {
    document.location = fallback;
  }
}

Semble fonctionner assez bien pour mon cas d'utilisation.

Mettre à jour: Si vous souhaitez créer une nouvelle fenêtre de secours, cela permet toujours au message d'erreur ios de s'afficher. Pour le contourner, essayez ceci.

   try {
    document.location = link;
  } catch(err) {
    window.location.reload(true);
    window.open(fallback, '_blank');
  }

2voto

Zeb Points 300

Vous pouvez simplement lire la valeur de retour à partir de la méthode -(BOOL)openURL:(NSURL )url*, si c'est NON, cela signifie que l'application cible n'est pas installée. Le code extrait ci-dessous donne un exemple utilisant le schéma d'URL de navigon :

 NSString *stringURL = @"navigon://coordinate/NaviCard/19.084443/47.573305";
NSURL *url = [NSURL URLWithString:stringURL];
if([[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"Well done!");
} else {
    stringURL = @"https://itunes.apple.com/it/app/id320279293?mt=8";
    url = [NSURL URLWithString:stringURL];
    [[UIApplication sharedApplication] openURL:url];
}

Merci à zszen pour la correction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X