2016-06-06 16 views

risposta

3

Fase 1: Fare clic sul nome del progetto >> target >> informazioni >> url Tipi

enter image description here

Fase 2:

-(IBAction)openSettingViewToEnableLocationService:(id)sender 
{ 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; 
} 
+0

non funziona in swift 4, xcode 9.2.1 – Mehul

10

È possibile aprire direttamente come l'utilizzo di seguito il codice,

Ma per prima cosa impostare URL Schemes in Info.plist di URL tipo come:

enter image description here

Quindi scrivi sotto la riga in corrispondenza di un evento specifico:

In Obiettivo - C:

[[UIApplication sharedApplication] openURL: 
[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; 

In Swift:

UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=LOCATION_SERVICES")!) 

Spero che questo vi aiuterà.

+0

Grazie, Jigar. ma ho già trovato la soluzione –

+0

Questa è la grande signora Monika Patel :) –

+0

Dopo l'implementazione passerà le linee guida per la recensione di App Store? – Ramis

2

Primo:

Aggiungi URL

Vai al progetto impostazioni -> Info -> tipi di URL -> Aggiungi nuovi schemi URL

vedi immagine sotto:

Secondo:

Usa sotto il codice per aprire le impostazioni di localizzazione:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]]; 

cui da: https://stackoverflow.com/a/35987082/5575752

+0

Questo non funziona da iOS 10 –

+0

@Joe Susnick Hai una soluzione per iOS 10 ? Grazie per l'aiuto –

+1

@EricBrunner si, ho pubblicato sopra ma l'url: '' 'App-Prefs: root = Privacy & path = LOCATION''' ha funzionato per me. –

28

servizi di localizzazione App-Prefs:root=Privacy&path=LOCATION ha lavorato per me. Quando ho provato su un dispositivo e non su un simulatore.

Non elenco le cose che ho provato che non ha funzionato, è una lunga lista.

esempio di utilizzo che si assume sia i servizi di localizzazione sono disattivati ​​o il permesso viene negato o non determinato:

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

Questo arresto anomalo in iOS 9 –

+0

ha funzionato perfettamente per iOS 10. Grazie! –

+1

Risposta perfetta, l'ho provato. – Mehul

2

Swift 3

andare direttamente alla impostazioni della tua applicazione come questa. Non dimenticare di mettere nel vostro identificatore bundle -

if let url = URL(string: "App-Prefs:root=Privacy&path=LOCATION/your.bundle.identifier") { 
    UIApplication.shared.open(url, options: [:], completionHandler: nil) 
} 
+1

facile: UIApplication.shared.openURL (URL.init (stringa:! UIApplicationOpenSettingsURLString)) –

+0

@ TàTruhoada E ' inutile se i servizi di localizzazione sono disabilitati, ciò che hai scritto qui è per l'autorizzazione alla localizzazione dell'app ma non per abilitare/disabilitare i servizi di localizzazione stessa .. non puoi cambiare le autorizzazioni di localizzazione per la tua app se i servizi di localizzazione sono disabilitati – user25

0

Dopo l'aggiunta di preferenze come un tipo di URL, utilizzare il seguente codice per accedere direttamente alle impostazioni localizzazione di un'applicazione.

if let url = URL(string: "App-prefs:root=LOCATION_SERVICES") { 
    UIApplication.shared.open(url, options: [:], completionHandler: nil) 
} 
0

In realtà c'è una soluzione molto più semplice. Mostrerà le impostazioni dell'app con servizi di localizzazione/accesso alla telecamera, ecc .:

func showUserSettings() { 
    guard let urlGeneral = URL(string: UIApplicationOpenSettingsURLString) else { 
     return 
    } 
    UIApplication.shared.open(urlGeneral) 
} 
+0

le impostazioni dell'app, non il sistema Attiva/disattiva la posizione scheda ... – user25

+0

non è possibile abilitare la posizione e modificare i permessi per la tua app se i servizi di localizzazione sono disabilitati nel sistema, quindi prima devi abilitare i servizi di localizzazione (vedi screenshot dalla domanda dell'autore) – user25

+0

Ah, sì - tu hai ragione - mi mancava quello. –