Wie kann ich Safari über eine iPhone-App starten?

127

Dies mag eine ziemlich offensichtliche Frage sein, aber können Sie den Safari-Browser über eine iPhone-App starten?

Keuminotti
quelle

Antworten:

200

sollte folgendes sein:

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

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
surtyaar
quelle
Wird dies für die Speichernutzung Ihrer App berücksichtigt? Gibt es auch eine gute Möglichkeit, zu Ihrer App zurückzukehren (wie die Anmeldefunktion auf Websites sozialer Netzwerke)?
brendan
1
@brendan meine Vermutung wäre nein, da ich davon ausgehe, dass die 'Webview' in der Safari-Anwendung gestartet wird, so dass sie unter diesen Prozess fallen würde
surtyaar
12
Betrüger der früheren Antwort vom 09.05.09
Barett
2
@Barett: Nicht genau, denn das ist eine Antwort vom 21.9.09
Bergi
4
IMO ist der API-Aufruf so ähnlich, dass diese Antwort besser als Bearbeitung oder Kommentar zur vorherigen Antwort angewendet worden wäre.
Barett
52

UIApplication hat eine Methode namens openURL:

Beispiel:

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

if (![[UIApplication sharedApplication] openURL:url]) {
  NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
Brad Der App-Typ
quelle
16

Sie können die URL in Safari folgendermaßen öffnen:

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

Mit iOS 10 haben wir eine andere Methode mit Completion Handler :

Ziel 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){
}];

Schnell:

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

Vielleicht kann jemand die Swift-Version verwenden:

In schneller 2.2:

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

Und 3.0:

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

In Swift 4 und 5, da OpenURL abgeschrieben wird, wäre eine einfache Möglichkeit, dies zu tun, gerecht

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

Sie können auch verwenden SafariServices. So etwas wie ein Safari-Fenster in Ihrer App.

import SafariServices

...

if let url = URL(string: "https://stackoverflow.com") {
    let safariViewController = SFSafariViewController(url: url)        
    self.present(safariViewController, animated: true)
}
Jia Chen
quelle
Während dieses Code-Snippet die Frage möglicherweise löst, hilft eine Erklärung , die Qualität Ihrer Antwort zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
Stefan Crain
1

In Swift 3.0 können Sie diese Klasse verwenden, um mit Ihnen zu kommunizieren. Die Framework-Betreuer haben frühere Antworten abgelehnt oder entfernt.

UIKit importieren

Klasse InterAppCommunication {
    statische Funktion openURI (_ URI: String) {
        UIApplication.shared.open (URL (Zeichenfolge: URI)!, Optionen: [:], Vervollständigungshandler: {(succ: Bool) im Druck ("Complete! Success? \ (Succ)")})
    }}
}}
lisp-ceo
quelle