2011-02-06 15 views

risposta

13

Il CLLocationManager fornisce metodi di classe per determinare la disponibilità dei servizi di localizzazione:

- (BOOL)locationServicesEnabled (for < iOS 4.0)

+ (BOOL)locationServicesEnabled (for iOS 4.0 and greater)

+ (CLAuthorizationStatus)authorizationStatus (for iOS 4.2+)

(e altri, consultare la documentazione)

+0

Questa proprietà è quello che stavo cercando! Grazie! =) – nosuic

+6

fai attenzione che 'authorizationStatus' richiede iOS4.2 + e' + (BOOL) locationServicesEnabled' richiede iOS4.0 ... E per le versioni precedenti di iOS, è '- (BOOL) locationServicesEnabled' ... –

3

Se l'applicazione non può funzionare senza servizi di localizzazione, è possibile impostare i servizi di localizzazione come requisito per l'installazione/esecuzione della app tramite Info.plist dell'app. A tale scopo, aggiungi la chiave UIDeviceCapabilities all'Info.plist della tua app e assegnagli un valore corrispondente di "servizi di localizzazione" meno le virgolette.

Con Info.plist configurato in questo modo, se i servizi di localizzazione sono disattivati, o se il dispositivo è in modalità aereo, o qualsiasi altra cosa impedisce l'uso di servizi di localizzazione sul dispositivo, iOS richiederà all'utente di ruotare sui servizi di localizzazione all'apertura dell'app.

EDIT: Breve sperimentazione sembra indicare che iOS non richiede all'utente in questa circostanza, quindi questa non sarebbe una buona soluzione per voi.

Per ulteriori informazioni, è possibile consultare la sezione relativa ai riferimenti ai codici di proprietà delle informazioni della documentazione per sviluppatori Apple.

+0

Grazie mille per le informazioni! – nosuic

1

Utilizzare il seguito pezzo di codice ...

if (![CLLocationManager locationServicesEnabled]) { 


    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 

} 
0

utilizzare il seguente codice, che funzionerà anche in iOS 8.

if([CLLocationManager locationServicesEnabled]&& 
    [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied) 
{ 
    //...Location service is enabled 
} 
else 
{ 
//...Location service is disabled 
} 
Problemi correlati