ОБНОВЛЕНИЕ: ЭТО НЕ ДУБЛИКАТ. Я уже добавил необходимый ключ в info.plist, как указано в моем первоначальном вопросе, и проблема остается. Я пробовал все три ключа в разных комбинациях.Не предложено включить службы местоположения в приложении
Прежде, чем кто-либо расстроится, я прочитал много сообщений на форуме Apple Dev и переполнял сообщения о переполнении и не могу понять, почему мое приложение отказывается предлагать пользователю разрешить использование In In Use.
Я добавил следующий ключ к моему Info.plist
файлу с сопровождающим строковым значением:
NSLocationWhenInUseUsageDescription
Я тогда написанным (как в Swift и Obj-C) код, который должен подсказать пользователь:
@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
Это было в основном скопировано прямо из примера кода Apple «LocateMe».
Независимо от того, какие различные последовательности или незначительные изменения я стараюсь, приложение никогда не запрашивает разрешение. Я использовал оператор switch для определения состояния [CLLocationManager authorizationStatus]
, но постоянно получаю ответ «Не определено».
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;
}
}
Любая помощь была бы принята с благодарностью. Я запускаю Xcode 6.2 (6C101) с физическим устройством iOS 8.1.2 и iOS 8.2 (12D5452a) для тестирования.
@ n00bПрограммист Я не вижу этот параметр сброса, доступный на вкладке «Настройки»> «Сброс» симулятора. Кроме того, я написал две программы: одну в Swift и одну в Obj-C, и обе делают то же самое. Я также тестировал с помощью физического устройства и получил те же результаты. Я еще не пробовал перезагрузить оборудование. – Andrew