¿Cómo puedo iniciar Safari desde una aplicación de iPhone?

127

Esta podría ser una pregunta bastante obvia, pero ¿puede iniciar el navegador Safari desde una aplicación de iPhone?

keuminotti
fuente

Respuestas:

200

debe ser el siguiente:

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

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
surtyaar
fuente
¿Esto contará para el uso de memoria de su aplicación? Además, ¿hay una buena manera de volver a su aplicación (como la función de inicio de sesión en los sitios de redes sociales)?
brendan
1
@brendan creo que ha de ser como yo supongo que la 'vista web' se puso en marcha en la aplicación de safari por lo que estaría incluida en ese proceso
surtyaar
12
engañado de respuesta anterior del 5/9/09
Barett
2
@Barett: No exactamente en realidad, porque esa es una respuesta 21/09/09
Bergi
44
En mi opinión, la llamada a la API es lo suficientemente similar como para que esta respuesta se haya aplicado mejor como una edición o comentario sobre la respuesta anterior.
Barett
52

UIApplication tiene un método llamado openURL:

ejemplo:

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

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

puedes abrir la url en safari con esto:

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

Con iOS 10 tenemos un método diferente con el controlador de finalización :

C objetivo:

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
fuente
2

Quizás alguien pueda usar la versión Swift:

En swift 2.2:

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

Y 3.0:

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

En Swift 4 y 5, a medida que OpenURL se deprecia, una forma fácil de hacerlo sería simplemente

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

También puedes usar SafariServices. Algo así como una ventana de Safari dentro de su aplicación.

import SafariServices

...

if let url = URL(string: "https://stackoverflow.com") {
    let safariViewController = SFSafariViewController(url: url)        
    self.present(safariViewController, animated: true)
}
Jia Chen
fuente
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación ayuda a mejorar la calidad de su respuesta. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código.
Stefan Crain
1

En Swift 3.0, puede usar esta clase para ayudarlo a comunicarse. Los mantenedores del marco han desaprobado o eliminado las respuestas anteriores.

importar UIKit

clase InterAppCommunication {
    func estática openURI (_ URI: String) {
        UIApplication.shared.open (URL (cadena: URI) !, opciones: [:], completeHandler: {(succ: Bool) en impresión ("Complete! Success? \ (Succ)")})
    }
}
lisp-ceo
fuente