Почему после переустановки iOS-приложения всплывающее окно с разрешением местоположения не появляется? - PullRequest
0 голосов
/ 29 июня 2018

Я сталкиваюсь с одной странной проблемой при использовании CLLocationManager для извлечения текущего местоположения. Когда я в первый раз запрашиваю текущее местоположение, я получаю всплывающее окно с разрешением Разрешить и Не разрешать . Я выбрал Не разрешать , а затем я зашел в «Настройки приложения» и «Включить местоположение», выбрав При использовании приложения , и вернулся в приложение и удалил приложение. Когда я переустанавливаю тот же файл ipa, я не получаю всплывающее окно разрешения снова.

Наблюдение: Когда я отлаживал приложение, я узнал, что когда приложение было установлено впервые и запросил обновление местоположения, я получал AuthorizationStatus = kCLAuthorizationStatusNotDetermined и оттуда я звонил requestWhenInUseAuthorization но когда я переустанавливал приложение вместо kCLAuthorizationStatusNotDetermined AuthorizationStatus я непосредственно получаю requestWhenInUseAuthorization . Я наблюдал эту проблему в iPhone 7 Plus с iOS 10. Я добавил ключи прав доступа в мой файл info.plist. enter image description here

Пожалуйста, найдите фрагмент кода, который я использовал в приложении.

- (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.

...