Я сталкиваюсь с одной странной проблемой при использовании CLLocationManager для извлечения текущего местоположения. Когда я в первый раз запрашиваю текущее местоположение, я получаю всплывающее окно с разрешением Разрешить и Не разрешать . Я выбрал Не разрешать , а затем я зашел в «Настройки приложения» и «Включить местоположение», выбрав При использовании приложения , и вернулся в приложение и удалил приложение. Когда я переустанавливаю тот же файл ipa, я не получаю всплывающее окно разрешения снова.
Наблюдение: Когда я отлаживал приложение, я узнал, что когда приложение было установлено впервые и запросил обновление местоположения, я получал AuthorizationStatus = kCLAuthorizationStatusNotDetermined и оттуда я звонил requestWhenInUseAuthorization но когда я переустанавливал приложение вместо kCLAuthorizationStatusNotDetermined AuthorizationStatus я непосредственно получаю requestWhenInUseAuthorization . Я наблюдал эту проблему в iPhone 7 Plus с iOS 10. Я добавил ключи прав доступа в мой файл info.plist.
Пожалуйста, найдите фрагмент кода, который я использовал в приложении.
- (Void)getCurrentLocation {
// Check if location services enabled in settings..
if ([CLLocationManager locationServicesEnabled]) {
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.delegate = self;
}
else{
NSLog(@"Location Services Turn Off");
}
}
[1]: https://i.stack.imgur.com/vo4An.png
#pragma mark- CoreLocation Delegate Methods
// This will be called when app level location permissions are changed.
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
NSLog(@"didChangeStatus called.. status: %d", status);
switch (status) {
case kCLAuthorizationStatusNotDetermined:{
NSLog(@"kCLAuthorizationStatusNotDetermined");
[locationManager requestWhenInUseAuthorization];
}
break;
case kCLAuthorizationStatusRestricted:{
NSLog(@"kCLAuthorizationStatusRestricted");
}
break;
case kCLAuthorizationStatusDenied:
{
NSLog(@"kCLAuthorizationStatusDenied");
}
break;
default:{
[locationManager startUpdatingLocation];
}
break;
}
}
// This delegate method will be called in case of iOS 6 or later when location data is fetched successfully.
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
CLLocation* receivedLocation = [locations lastObject];
[self formatLocationData:receivedLocation];
}
Пожалуйста, отметьте и дайте мне знать, что мне делать, чтобы получить всплывающее окно «Разрешение на местоположение» при переустановке того же файла ipa.