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