Come posso avviare Safari da un'app per iPhone?


127

Questa potrebbe essere una domanda piuttosto ovvia, ma puoi avviare il browser Safari da un'app per iPhone?

Risposte:


200

dovrebbe essere il seguente:

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

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

Conterà questo per l'utilizzo della memoria della tua app? Inoltre, c'è un buon modo per tornare alla tua app (come la funzionalità di accesso nei siti di social network)?
brendan,

1
@brendan la mia ipotesi sarebbe no dato che presumo che la "webview" sia stata lanciata nell'applicazione Safari, quindi rientrerebbe in questo processo
surtyaar

12
dupe della precedente risposta del
5/5/09

2
@Barett: In realtà non esattamente, perché è una risposta del 21/09/09
Bergi,

4
La chiamata API dell'IMO è abbastanza simile che questa risposta sarebbe stata meglio applicata come modifica o commento sulla risposta precedente.
Barett,

52

UIApplication ha un metodo chiamato openURL:

esempio:

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

if (![[UIApplication sharedApplication] openURL:url]) {
  NSLog(@"%@%@",@"Failed to open url:",[url description]);
}

16

puoi aprire l'URL in Safari con questo:

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

4

Con iOS 10 abbiamo un metodo diverso con gestore di completamento :

ObjectiveC:

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

Swift:

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

2

Forse qualcuno può usare la versione di Swift:

In rapido 2.2:

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

E 3.0:

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

2

Nei rapidi 4 e 5, dato che OpenURL è ammortizzato, un modo semplice per farlo sarebbe giusto

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

Puoi anche usare SafariServices. Qualcosa come una finestra di Safari all'interno della tua app.

import SafariServices

...

if let url = URL(string: "https://stackoverflow.com") {
    let safariViewController = SFSafariViewController(url: url)        
    self.present(safariViewController, animated: true)
}

Mentre questo frammento di codice può risolvere la domanda, inclusa una spiegazione aiuta a migliorare la qualità della tua risposta. Ricorda che stai rispondendo alla domanda per i lettori in futuro e quelle persone potrebbero non conoscere i motivi del tuo suggerimento sul codice.
Stefan Crain,

1

In Swift 3.0, puoi utilizzare questa classe per aiutarti a comunicare. I manutentori del framework hanno deprecato o rimosso le risposte precedenti.

importare UIKit

classe InterAppCommunication {
    static func openURI (_ URI: String) {
        UIApplication.shared.open (URL (stringa: URI) !, opzioni: [:], completamentoHandler: {(succ: Bool) in stampa ("Complete! Success? \ (Succ)")})
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.