Я использовал службы определения местоположения во многих приложениях, но это новое приложение имеет проблемы с iOS 8.0 и выше. Я не получаю уведомление о первом запросе загрузки приложения, чтобы разрешить услуги определения местоположения. Однако на моем устройстве iOS 7.1 я получаю подсказку.iOS: Отслеживание местоположения пользователя
Вот что у меня в AppDelegate в didFinishLaunchingWithOptions:
self.locationManager = [CLLocationManager new];
[self.locationManager setDelegate:self];
if ([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[self.locationManager requestAlwaysAuthorization];
}
[self initializeRegionMonitoring];
И метод initializeRegionMonitoring является:
-(void) initializeRegionMonitoring {
NSLog(@"initialize region monitoring");
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
// radius of region being monitored
CLLocationDistance radius = 25; // 20 metre sensitivity
CLLocationCoordinate2D coordinate;
coordinate.latitude = 25.886099;
coordinate.longitude = -80.165124;
self.someRegion = [[CLCircularRegion alloc] initWithCenter:coordinate radius:radius identifier:@"Qualex"];
self.someRegion.notifyOnEntry = YES;
self.someRegion.notifyOnExit = YES;
[self.locationManager startMonitoringForRegion:self.someRegion];
// notify changes when the device has moved x meters
self.locationManager.distanceFilter = 20; // or set to 20 meters
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.activityType = CLActivityTypeAutomotiveNavigation;
[self.locationManager startUpdatingLocation];
[self.locationManager startMonitoringSignificantLocationChanges];
}
Я также установил NSLocationAlwaysUsageDescription в моем info.plist, так что должен быть тем, что я забыл, не так ли? Спасибо за помощь!
Edit:
Я также регистрации для удаленных уведомлений в то же время, что никогда не было проблемой раньше, но я думал, что это может быть какой-то полезной дополнительная информация.
Кроме того, при завершении приложения повторно запустите уведомление, чтобы разрешить службы определения местоположения всплывать, но уходит мгновенно. Просто мигает на экране. Я понятия не имею, почему он уволится, не нажимая на один из вариантов предупреждения.
Вы намеревались заменить экземпляр вашего 'locationManager' в методе' initializeRegionMonitoring'? У второго экземпляра никогда не будет вызвана «requestAlwaysAuthorization», которая может быть источником вашей проблемы. – thelaws
Вы действительно намеревались использовать два разных менеджера местоположения, как это? – matt
@thelaws Это не должно иметь значения. Авторизация местоположения является глобальной в текущем приложении во всех экземплярах CLLocationManager. После того, как пользователь предоставил постоянный доступ к местоположению, все управляющие местоположением будут иметь этот доступ – n00neimp0rtant