¿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?

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

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

16

puedes abrir la url en safari con esto:

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

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
}

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

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

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)")})
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.