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?

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

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

16

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

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

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
}

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

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


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)")})
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.