Za pomocą UIApplication.openSettingsURLString
Aktualizacja dla Swift 5.1
override func viewDidAppear(_ animated: Bool) {
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
Swift 4.2
override func viewDidAppear(_ animated: Bool) {
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
viewDidAppear
metody, za pomocą przyciskuSettings
iCancel
UIApplication.sharedApplication().openURL(yourCustomURL)
z bieżącej aplikacji, ale nie masz tego dostępu z aplikacji UstawieniaOryginalna odpowiedź poniżej
Szybki 5
Szybki 4
UWAGA: Poniższa metoda działa dla wszystkich wersji poniżej iOS 11, w przypadku wyższych wersji aplikacja może zostać odrzucona, ponieważ jest to prywatny interfejs API
Czasami chcemy przenieść użytkownika do ustawień innych niż ustawienia naszej aplikacji. Poniższa metoda pomoże Ci to osiągnąć:
Najpierw skonfiguruj schematy adresów URL w swoim projekcie. Znajdziesz go w Target -> Info -> URL Scheme. kliknij przycisk + i wpisz preferencje w schematach adresów URL
Szybki 5
Szybki 3
Szybki
Cel C
a poniżej znajdują się wszystkie dostępne adresy URL
** Na IOS <12 **
W systemie IOS 13
Preferencje aplikacji: DO_NOT_DISTURB
Nie testowany
Preferencje aplikacji: TWITTER (??)
Uwaga: ustawienie sieci nie zostanie otwarte w symulatorze, ale łącze będzie działać na prawdziwym urządzeniu.
źródło
App-Prefs
zamiastprefs
jako schematu ciągu adresu URL. np.App-Prefs:root=WIFI
App-Prefs
lub,prefs:root
ponieważ są to prywatne interfejsy API i jeśli nie masz szczęścia, Twoja aplikacja zostanie odrzucona.W iOS 8+ możesz wykonać następujące czynności:
Szybki 4
źródło
UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
URL(string: UIApplication.openSettingsURLString).map { UIApplication.shared.open($0, options: [:], completionHandler: nil) }
Korzystając ze wskazówki @ vivek, opracowuję klasę narzędzi w oparciu o Swift 3 , mam nadzieję, że docenisz!
Jest to bardzo pomocne, ponieważ to API na pewno się zmieni i możesz raz i bardzo szybko refaktoryzować!
źródło
Pierwsza odpowiedź ze schematów adresów URL specyficznych dla aplikacji zadziałała dla mnie na iOS 10.3.
źródło
App-Prefs:root=Privacy&path=LOCATION
pomogło mi w uzyskaniu ogólnych ustawień lokalizacji. Uwaga: działa tylko na urządzeniu.źródło
w ios10 / Xcode 8 w symulatorze:
Pracuje
nie.
źródło
NS
prefiks został usunięty w iOS 10?Widziałem tę linię kodu
nie działa, nie działa u mnie w ios10 / Xcode 8, tylko mała różnica w kodzie, proszę zastąpić to
Swift3
Zamienić
Mam nadzieję, że to pomoże. Twoje zdrowie.
źródło
słowo ostrzeżenia: schematy
prefs:root
lubApp-Prefs:root
URL są uważane za prywatne API. Apple może odrzucić Twoją aplikację, jeśli z nich korzystasz. Oto, co możesz otrzymać, przesyłając swoją aplikację:źródło
Swift 4.2, iOS 12
open(url:options:completionHandler:)
Metoda została zaktualizowana o słownika a non-nil opcje, które jak tego postu zawiera tylko jedną z możliwych opcji typuUIApplication.OpenExternalURLOptionsKey
(na przykład).Jawne utworzenie adresu URL, na przykład „App-Prefs”, spowodowało, AFAIK, spowodowanie odrzucenia niektórych aplikacji ze sklepu.
źródło
Dodawanie do @Luca Davanzo
iOS 11, niektóre ustawienia uprawnień zostały przeniesione do ścieżki aplikacji:
źródło
SWIFT 4
Może to wymagać określonych ustawień aplikacji, jeśli tego właśnie szukasz.
źródło
Jak powyżej @niravdesai powiedział App-prefs. Okazało się, że
App-Prefs:
działa to zarówno na testowanych urządzeniach z iOS 9, 10, jak i 11.. gdzieprefs:
działa tylko na iOS 9.źródło