Obecnie otwieram łącze w mojej aplikacji w a WebView
, ale szukam opcji, aby zamiast tego otworzyć łącze w Safari .
150
Nie jest to „zapieczętowane w Swifcie”, ale możesz to zrobić za pomocą standardowych UIKit
metod. Spójrz na pliki UIApplication (przestarzałe) i .openUrl(_:)
open(_:options:completionHandler:)
Swift 4 + Swift 5 (iOS 10 i nowsze)
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.open(url)
Swift 3 (iOS 9 i starsze)
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.shared.openURL(url)
Swift 2.2
guard let url = URL(string: "https://stackoverflow.com") else { return }
UIApplication.sharedApplication().openURL(url)
Nowość w systemie iOS 9 i nowszym możesz przedstawić użytkownikowi
SFSafariViewController
(zobacz dokumentację tutaj ). Zasadniczo zyskujesz wszystkie korzyści płynące z wysłania użytkownika do Safari bez zmuszania go do opuszczania aplikacji. Aby użyć nowego SFSafariViewController, wystarczy:i gdzieś w module obsługi zdarzeń przedstawia użytkownikowi kontroler widoku safari w następujący sposób:
Widok safari będzie wyglądał mniej więcej tak:
źródło
sharedApplication
w rozszerzeniu aplikacji jest zabroniony. Więcej informacji: developer.apple.com/library/archive/documentation/General/…AKTUALIZACJA dla Swift 4: (dzięki Marco Weberowi)
LUB wybierz szybszy styl, używając
guard
:Swift 3:
Możesz sprawdzić NSURL jako opcjonalny niejawnie przez:
źródło
if let requestUrl = NSURL(string: "http://www.iSecurityPlus.com") { UIApplication.shared.openURL(requestUrl as URL) }
Swift 3 i IOS 10.2
źródło
od iOS 10 powinieneś używać:
źródło
Szybki 5
Swift 5: Sprawdź,
canOpneURL
czy jest ważny, a następnie jest otwarty.źródło
W Swift 1.2:
źródło
W Swift 2.0:
źródło
IOS 11.2 Swift 3.1 - 4
źródło