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?

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

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

16

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

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

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
}

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")!)

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)
}

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)")})
    }}
}}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.