Jak mogę uruchomić Safari z aplikacji na iPhone'a?

127

To może być dość oczywiste pytanie, ale czy możesz uruchomić przeglądarkę Safari z aplikacji na iPhone'a?

keuminotti
źródło

Odpowiedzi:

200

powinien wyglądać następująco:

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

if (![[UIApplication sharedApplication] openURL:url]) {
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
}
surtyaar
źródło
Czy to się liczy do wykorzystania pamięci przez aplikację? Czy istnieje dobry sposób na powrót do aplikacji (na przykład funkcja logowania w serwisach społecznościowych)?
brendan
1
@brendan moje przypuszczenie, że nie będzie tak jak zakładają „webview” jest uruchamiany w safari aplikacji więc byłoby objęte tym procesem
surtyaar
12
duplikat wcześniejszej odpowiedzi
5/9/09
2
@Barett: Niezupełnie, ponieważ jest to odpowiedź z 21
Bergi
4
IMO wywołanie API jest na tyle podobne, że ta odpowiedź byłaby lepiej zastosowana jako edycja lub komentarz do poprzedniej odpowiedzi.
Barett
53

UIApplication ma metodę o nazwie openURL:

przykład:

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

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

możesz otworzyć adres URL w Safari za pomocą tego:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.google.com"]];
Dhaval Parmar
źródło
4

W iOS 10 mamy jedną inną metodę z obsługą zakończenia :

Cel C:

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

Szybki:

let url = URL(string: "http://www.stackoverflow.com")
UIApplication.shared.open(url, options: [:]) { (success) in
}
DZoki019
źródło
3

Może ktoś może skorzystać z wersji Swift:

W Swift 2.2:

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

I 3.0:

UIApplication.shared().openURL(URL(string: "https://www.google.com")!)
Jens Peter
źródło
2

W szybkim 4 i 5, ponieważ OpenURL jest amortyzowany, prostym sposobem byłoby to po prostu

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

Możesz także użyć SafariServices. Coś w rodzaju okna Safari w Twojej aplikacji.

import SafariServices

...

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

Jia Chen
źródło
Chociaż ten fragment kodu może rozwiązać problem, dołączenie wyjaśnienia pomoże poprawić jakość Twojej odpowiedzi. Pamiętaj, że odpowiadasz na pytanie do czytelników w przyszłości, a osoby te mogą nie znać powodów, dla których zaproponowałeś kod.
Stefan Crain
1

W Swift 3.0 możesz użyć tej klasy, aby ułatwić komunikację. Opiekunowie frameworka wycofali lub usunęli poprzednie odpowiedzi.

import UIKit

class InterAppCommunication {
    static func openURI (_ URI: String) {
        UIApplication.shared.open (URL (ciąg: URI) !, opcje: [:], completeHandler: {(succ: Bool) in print ("Complete! Success? \ (Succ)")})
    }
}
lisp-ceo
źródło