web-dev-qa-db-fra.com

Swift: Comment ouvrir une nouvelle application quand UIButton est exploité

J'ai une application et lorsqu'un utilisateur clique sur un bouton-poussoir, je souhaite ouvrir une autre application déjà installée (par exemple, Waze). Comment puis-je faire un tel? Grand merci.

8
thedansaps

Essaye ça. Par exemple, vous voulez ouvrir une application Instagram:

    var instagramHooks = "instagram://user?username=johndoe"
    var instagramUrl = NSURL(string: instagramHooks)
    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/")!)
    }
12
Orkhan Alizade

Dans SecondApp

Allez dans le fichier plist de SecondApp et vous aurez besoin d'ajouter un schéma d'URL avec une chaîne iOSDevTips (bien sûr, vous pouvez écrire une autre chaîne.C'est à vous de choisir).

 enter image description here

2 Dans FirstApp

Créez un bouton avec l'action ci-dessous:

- (void)buttonPressed:(UIButton *)button
{
  NSString *customURL = @"iOSDevTips://";

  if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
  {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
  }
  else
  {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error"
                              message:[NSString stringWithFormat:@"No custom URL defined for %@", customURL]
                              delegate:self cancelButtonTitle:@"Ok" 
                              otherButtonTitles:nil];
    [alert show];
  }

}

C'est tout. Maintenant, lorsque vous pouvez cliquer sur le bouton dans la FirstApp, il devrait ouvrir la SecondApp.

Pour plus d'informations, référez-vous ici

5
PK20

Vous pouvez rechercher Communauté Waze pour référence.

Extrait de code Objective-C:

if ([[UIApplication sharedApplication]
canOpenURL:[NSURL URLWithString:@"waze://"]]) {

  // Waze is installed. Launch Waze and start navigation
  NSString *urlStr =
    [NSString stringWithFormat:@"waze://?ll=%f,%f&navigate=yes",
    latitude, longitude];

  [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];

 } else {

  // Waze is not installed. Launch AppStore to install Waze app
  [[UIApplication sharedApplication] openURL:[NSURL
    URLWithString:@"http://iTunes.Apple.com/us/app/id323229106"]];
}

Extrait de code rapide:

if UIApplication.shared.canOpenURL(URL(string: "waze://")!) {
    // Waze is installed. Launch Waze and start navigation
    let urlStr = String(format: "waze://?ll=%f, %f&navigate=yes", latitude, longitude)
    UIApplication.shared.openURL(URL(string: urlStr)!)
} else {
    // Waze is not installed. Launch AppStore to install Waze app
    UIApplication.shared.openURL(URL(string: "http://iTunes.Apple.com/us/app/id323229106")!)
}
2
0xa6a

dans Swift4 waze

class FullMapVC: UIViewController {

    var lat:CLLocationDegrees?
    var long:CLLocationDegrees?

    func wazeMaps()
    {
        let openUrl = URL(string: "waze://?ll=\(String(describing: lat!)),\(String(describing: long!))&navigate=yes")!
        UIApplication.shared.open(openUrl , options:[:]) { (success) in
            if !success
            {

            }
        }
    }

}

remplacez l'URL par si vous voulez utiliser Google Maps

 let openUrl = URL(string: "comgooglemaps://?saddr=&daddr=\(String(describing: lat!)),\(String(describing: long!))&directionsmode=driving")!
1
u.gen

dans Swift 4:

if let url = URL(string: "\(myUrl)") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)

}

0
Mohammad Mirzakhani