Como iniciar o Safari a partir de um aplicativo para iPhone?

127

Essa pode ser uma pergunta bastante óbvia, mas você pode iniciar o navegador Safari a partir de um aplicativo para iPhone?

keuminotti
fonte

Respostas:

200

deve ser o seguinte:

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

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
surtyaar
fonte
Isso conta para o uso da memória do seu aplicativo? Além disso, existe uma boa maneira de voltar ao seu aplicativo (como o recurso de login em sites de redes sociais)?
22412
1
@brendan meu palpite não seja como eu assumir o 'webview' é lançado na aplicação safari por isso cairia sob esse processo
surtyaar
12
O que você está esperando?
Barett
2
@Barett: Não é exatamente verdade, porque isso é uma resposta 9/21/09
Bergi
4
Na IMO, a chamada da API é semelhante o suficiente para que essa resposta tenha sido melhor aplicada como uma edição ou comentário na resposta anterior.
Barett
52

O UIApplication possui um método chamado openURL:

exemplo:

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

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

você pode abrir o URL no safari com isso:

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

No iOS 10, temos um método diferente com o manipulador de conclusão :

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

Rápido:

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

Talvez alguém possa usar a versão Swift:

No veloz 2.2:

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

E 3.0:

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

Nos swift 4 e 5, como o OpenURL é depreciado, uma maneira fácil de fazer isso seria apenas

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

Você também pode usar SafariServices. Algo como uma janela do Safari no seu aplicativo.

import SafariServices

...

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

Jia Chen
fonte
Embora esse trecho de código possa resolver a questão, incluir uma explicação ajuda a melhorar a qualidade de sua resposta. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código.
Stefan Crain
1

No Swift 3.0, você pode usar esta classe para ajudá-lo a se comunicar. Os mantenedores da estrutura preteriram ou removeram as respostas anteriores.

importar UIKit

classe InterAppCommunication {
    função estática openURI (_ URI: String) {
        UIApplication.shared.open (URL (string: URI) !, opções: [:], conclusãoHandler: {(succ: Bool) na impressão ("Complete! Success? \ (Succ)")})
    }
}
lisp-ceo
fonte