AGGIORNAMENTO: QUESTO NON È UN DUPLICATO. Ho già aggiunto la chiave richiesta a info.plist come indicato nella mia domanda originale e il problema rimane. Ho provato tutte e tre le chiavi in varie combinazioni.Non viene richiesto di abilitare i servizi di localizzazione nell'app
Prima che qualcuno si arrabbi, ho letto molti post del forum Apple Dev e ho inserito post di overflow e non riesco a capire perché la mia app si rifiuta di chiedere all'utente di consentire l'autorizzazione When In Use.
ho aggiunto la seguente chiave al mio file Info.plist
con un valore stringa di accompagnamento:
NSLocationWhenInUseUsageDescription
Ho quindi scritto (sia in Swift e Obj-C), il codice che dovrebbe richiedere all'utente:
@property CLLocationManager *location;
...
@synthesize location;
...
location = [[CLLocationManager alloc] init];
location.delegate = self;
location.desiredAccuracy = kCLLocationAccuracyBest;
location.distanceFilter = kCLDistanceFilterNone;
[location requestWhenInUseAuthorization];
[location startUpdatingLocation];
I'm using the following CLLocationManagerDelegate methods.
- (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
- (void) locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
Questo è stato sostanzialmente copiato direttamente dal codice di esempio "LocateMe" di Apple.
Indipendentemente dalle varie sequenze o modifiche secondarie che provo, l'app non richiede mai l'autorizzazione. Ho utilizzato un'istruzione switch per determinare lo stato di [CLLocationManager authorizationStatus]
, ma ricevo continuamente una risposta "Non determinata".
if ([CLLocationManager locationServicesEnabled]) {
switch ([CLLocationManager authorizationStatus]) {
case kCLAuthorizationStatusAuthorizedAlways:
NSLog(@"Always Authorized");
break;
case kCLAuthorizationStatusDenied:
NSLog(@"Denied");
break;
case kCLAuthorizationStatusAuthorizedWhenInUse:
NSLog(@"Authorized in Use");
break;
case kCLAuthorizationStatusNotDetermined:
NSLog(@"Not Determined");
break;
case kCLAuthorizationStatusRestricted:
NSLog(@"Restricted");
break;
}
}
Qualsiasi aiuto sarebbe molto apprezzato. Sto eseguendo Xcode 6.2 (6C101) con il dispositivo fisico iOS 8.1.2 e il simulatore iOS 8.2 (12D5452a) per il test.
@ n00bProgrammer Non vedo l'opzione di ripristino disponibile nella scheda Impostazioni> Ripristina del simulatore. Inoltre, ho scritto due programmi, uno in Swift e uno in Obj-C ed entrambi fanno la stessa cosa. Ho anche provato con un dispositivo fisico e ho ottenuto gli stessi risultati. Non ho ancora provato a ripristinare l'hardware. – Andrew