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.