Comment lancer Safari depuis une application iPhone?

127

Cela peut être une question assez évidente, mais pouvez-vous lancer le navigateur Safari à partir d'une application iPhone?

keuminotti
la source

Réponses:

200

devrait être le suivant:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
surtyaar
la source
Cela comptera-t-il dans l'utilisation de la mémoire de votre application? Existe-t-il également un bon moyen de revenir à votre application (comme la fonction de connexion dans les sites de réseaux sociaux)?
brendan
1
@brendan, je suppose que ce serait non car je suppose que la `` vue Web '' est lancée dans l'application safari, elle tomberait donc sous ce processus
surtyaar
12
dupe de la réponse précédente du 09/05/09
Barett
2
@Barett: Pas exactement en fait, car c'est une réponse du
21/09/09
4
IMO, l'appel API est suffisamment similaire pour que cette réponse aurait été mieux appliquée en tant que modification ou commentaire de la réponse précédente.
Barett
52

UIApplication a une méthode appelée openURL:

exemple:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];

if (![[UIApplication sharedApplication] openURL:url]) {
  NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
Brad The App Guy
la source
16

vous pouvez ouvrir l'url dans safari avec ceci:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.google.com"]];
Dhaval Parmar
la source
4

Avec iOS 10, nous avons une méthode différente avec le gestionnaire de complétion :

Objectif c:

NSDictionary *options = [NSDictionary new];
//options can be empty
NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];
[[UIApplication sharedApplication] openURL:url options:options completionHandler:^(BOOL success){
}];

Rapide:

let url = URL(string: "http://www.stackoverflow.com")
UIApplication.shared.open(url, options: [:]) { (success) in
}
DZoki019
la source
2

Peut-être que quelqu'un peut utiliser la version Swift:

Dans Swift 2.2:

UIApplication.sharedApplication().openURL(NSURL(string: "https://www.google.com")!)

Et 3.0:

UIApplication.shared().openURL(URL(string: "https://www.google.com")!)
Jens Peter
la source
2

Dans swift 4 et 5, comme OpenURL est déprécié, un moyen simple de le faire serait simplement

if let url = URL(string: "https://stackoverflow.com") {
    UIApplication.shared.open(url, options: [:]) 
}

Vous pouvez également utiliser SafariServices. Quelque chose comme une fenêtre Safari dans votre application.

import SafariServices

...

if let url = URL(string: "https://stackoverflow.com") {
    let safariViewController = SFSafariViewController(url: url)        
    self.present(safariViewController, animated: true)
}
Jia Chen
la source
Bien que cet extrait de code puisse résoudre la question, l' inclusion d'une explication contribue à améliorer la qualité de votre réponse. N'oubliez pas que vous répondez à la question aux lecteurs à l'avenir et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
Stefan Crain
1

Dans Swift 3.0, vous pouvez utiliser cette classe pour vous aider à communiquer avec. Les responsables du framework ont ​​déconseillé ou supprimé les réponses précédentes.

importer UIKit

class InterAppCommunication {
    static func openURI (_ URI: String) {
        UIApplication.shared.open (URL (string: URI) !, options: [:], completionHandler: {(succ: Bool) in print ("Complete! Success? \ (Succ)")})
    }
}
lisp-ceo
la source