Services de location App-Prefs:root=Privacy&path=LOCATION
a travaillé pour moi. Lorsque j'ai testé sur un appareil et non sur un simulateur.
Je ne vais pas énumérer les choses que j'ai essayées qui n'ont pas fonctionné, c'est une longue liste.
Exemple d'utilisation supposant que les services de localisation sont désactivés ou que l'autorisation est refusée ou non déterminée:
if !CLLocationManager.locationServicesEnabled() {
if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION") {
// If general location settings are disabled then open general location settings
UIApplication.shared.openURL(url)
}
} else {
if let url = URL(string: UIApplicationOpenSettingsURLString) {
// If general location settings are enabled then open location settings for the app
UIApplication.shared.openURL(url)
}
}
J'ai essayé toutes les réponses ci-dessus, cela ne fonctionne pas sur iOS11..il suffit d'ouvrir la page des paramètres et non les paramètres de l'application .. Enfin, cela fonctionne ..
UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
Swift 4.2:
UIApplication.shared.open(URL(string:UIApplication.openSettingsURLString)!)
Voir: https://developer.Apple.com/documentation/uikit/uiapplicationopensettingsurlstring?language=Swift
Vous pouvez l'ouvrir directement comme en utilisant le code ci-dessous,
Mais d'abord mis URL Schemes
dans le type d'URL de Info.plist Like:
Puis écrivez au-dessous de la ligne à un événement spécifique:
Dans Objectif - C :
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];
En Swift :
UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=LOCATION_SERVICES")!)
J'espère que ceci vous aidera.
Swift 4.2
Allez directement dans les paramètres de votre application comme ceci. N'oubliez pas de mettre votre identifiant de paquet -
if let bundleId = Bundle.main.bundleIdentifier,
let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(bundleId)")
{
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Swift 4 testé:
Le seul moyen d'éviter de se faire rejeter et d'ouvrir les préférences de localisation de sa propre application est:
if let bundleId = Bundle.main.bundleIdentifier,
let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(bundleId)") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
First:
Ajouter une URL
Accédez à Paramètres du projet -> Info -> Types d’URL -> Ajouter de nouveaux modèles d’URL.
Voir l'image ci-dessous:
Seconde:
Utilisez le code ci-dessous pour ouvrir les paramètres d'emplacement:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];
référé de: https://stackoverflow.com/a/35987082/5575752
Si vous définissez locationManager.startUpdatingLocation () et que vous avez désactivé votre iPhone, il vous affiche automatiquement un alertView avec la possibilité d'ouvrir et d'activer l'emplacement.
En fait, il existe une solution beaucoup plus simple à cela. Il affichera les paramètres de votre application avec les services de localisation/accès à la caméra, etc.:
func showUserSettings() {
guard let urlGeneral = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
UIApplication.shared.open(urlGeneral)
}
Après avoir ajouté les préférences en tant que type d’URL, utilisez le code suivant pour accéder directement aux paramètres d’emplacement d’une application.
if let url = URL(string: "App-prefs:root=LOCATION_SERVICES") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
????????
Voulez-vous être en sécurité? utilisez UIApplicationOpenSettingsURLString
, ce qui ouvrira les paramètres de l'application sans lien profond .
En utilisant App-prefs
votre application sera rejetée, comme l’ont dit de nombreux sous-commentaires. https://github.com/mauron85/cordova-plugin-background-geolocation/issues/394