Usando UIApplication.openSettingsURLString
Atualização para o 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
método, com oSettings
eCancel
botãoUIApplication.sharedApplication().openURL(yourCustomURL)
aplicativo atual, mas você não tem esse acesso no aplicativo ConfiguraçõesResposta original abaixo
Swift 5
Swift 4
NOTA: O método a seguir funciona para todas as versões abaixo do iOS 11; para versões superiores, o aplicativo pode ser rejeitado, pois é uma API privada
Às vezes, queremos levar um usuário para configurações diferentes das configurações de nossos aplicativos. O método a seguir ajudará você a conseguir isso:
Primeiro, configure os esquemas de URL em seu projeto. Você o encontrará em Destino -> Informações -> Esquema de URL. clique no botão + e digite prefs em esquemas de URL
Swift 5
Swift 3
Rápido
Objetivo-C
e a seguir estão todos os URLs disponíveis
** No IOS <12 **
No IOS 13
Preferências de aplicativo: DO_NOT_DISTURB
Não testado
Preferências de aplicativo: TWITTER (??)
Nota: A configuração de rede não será aberta em um simulador, mas o link funcionará em um dispositivo real.
fonte
App-Prefs
vez deprefs
como o esquema da cadeia de caracteres da URL. por exemploApp-Prefs:root=WIFI
App-Prefs
ouprefs:root
como essas são APIs privadas e, a menos que você tenha muita sorte, seu aplicativo será rejeitado.No iOS 8+, você pode fazer o seguinte:
Swift 4
fonte
UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
URL(string: UIApplication.openSettingsURLString).map { UIApplication.shared.open($0, options: [:], completionHandler: nil) }
Usando a dica de @ vivek, desenvolvo uma classe utils baseada no Swift 3 , espero que você goste!
Isso é muito útil, pois as APIs mudarão com certeza e você pode refatorar uma vez e muito rápido!
fonte
A primeira resposta dos esquemas de URL específicos do aplicativo funcionou para mim no iOS 10.3.
fonte
App-Prefs:root=Privacy&path=LOCATION
trabalhou para mim para obter as configurações gerais de localização. Nota: só funciona em um dispositivo.fonte
no ios10 / Xcode 8 no simulador:
trabalho
não.
fonte
NS
prefixo foi removido no iOS 10?Eu vi essa linha de código
não está funcionando, não funcionou para mim no ios10 / Xcode 8, apenas uma pequena diferença de código, substitua-a por
Swift3
Substituir com
Espero que ajude. Felicidades.
fonte
aviso: os esquemas de URL
prefs:root
ouApp-Prefs:root
são considerados API privada. A Apple pode rejeitar seu aplicativo, se você os usar, eis o que você pode obter ao enviar seu aplicativo:fonte
Swift 4.2, iOS 12
O
open(url:options:completionHandler:)
método foi atualizado para incluir um dicionário de opções não nulo, que, a partir desta postagem, contém apenas uma opção possível do tipoUIApplication.OpenExternalURLOptionsKey
(no exemplo).A criação explícita de um URL, como com "App-Prefs", AFAIK, recebeu alguns aplicativos rejeitados da loja.
fonte
Adicionando a @Luca Davanzo
iOS 11, algumas configurações de permissões foram movidas para o caminho do aplicativo:
fonte
SWIFT 4
Isso pode levar as configurações específicas do seu aplicativo, se é isso que você está procurando.
fonte
Como acima @niravdesai disse App-prefs. Descobri que
App-Prefs:
funciona para dispositivos iOS 9, 10 e 11. testados. ondeprefs:
só funciona no iOS 9.fonte