Sprawdzanie usług lokalizacji iOS

Mam widok z mapą i przyciskiem (jak kiedyś aplikacja Mapy), który pozwala użytkownikowi wyśrodkować i powiększyć swoją aktualną lokalizację na mapie. Jeśli nie mogę użyć metody locationServicesEnabled (zawsze zwraca YES), czy powinienem utworzyć atrybut BOOL, aby sprawdzić, czy metoda didFailWithError jest wywołana i czy mogę wywołać metodę button?

Dzięki za przeczytanie.

Edited:

Ten kod nie działa dla mnie. Używam symulatora. Zawsze dostaję tak pytając locationServicesEnabled.

// Gets the user present location.
- (IBAction)locateUser:(id)sender {

    if([CLLocationManager locationServicesEnabled]) {

        CLLocationCoordinate2D coordinate;

        coordinate.latitude = self.mapView.userLocation.location.coordinate.latitude;
        coordinate.longitude = self.mapView.userLocation.location.coordinate.longitude;

        [self zoomCoordinate:coordinate];
    } else {
        [[[[UIAlertView alloc] initWithTitle:@"Warning." message:@"Location services are disabled." 
                                    delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show];     
    }
}
Author: Daniel García Baena, 2010-12-01

4 answers

W preferencjach masz dwie opcje wyłączenia usług lokalizacji. Pierwszą opcją jest globalny przełącznik, który wyłącza usługę lokalizacji dla wszystkich aplikacji "[CLLocationManager locationServicesEnabled]". Druga opcja umożliwia wyłączenie usługi lokalizacji dla niektórych aplikacji, ale nie dla wszystkich aplikacji.

Aby sprawdzić, czy jest wyłączony globalnie i czy jest wyłączony dla Twojej aplikacji:

if([CLLocationManager locationServicesEnabled] && 
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
...
}
 99
Author: Robin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-14 08:29:33

"locationServicesEnabled" sprawdza, czy użytkownik włączył Usługi lokalizacji w preferencjach. Twój MapView prawdopodobnie już sprawdza tę wartość i nie powinien ustawiać żadnych wartości na " self.mapView.userLocation " jeśli usługi lokalizacyjne nie są dostępne. To pytanie może dać ci więcej informacji.

 1
Author: Nippysaurus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:12

Ja też napotkałem ten problem i wciąż znajduję odpowiedź.

Upewnij się, że authorizationStatus wymaga iOS4.2+ i + (BOOL)locationServicesEnabled wymaga iOS4.0... A dla poprzednich wersji iOS jest to - (BOOL)locationServicesEnabled...

 1
Author: lin zheng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-22 20:39:45
- (BOOL) enableLocationServices
{

    if ([CLLocationManager locationServicesEnabled])
    {
        self.locationManager.distanceFilter = 10;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        [self.locationManager startUpdatingLocation];
        [self.mapview setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
        return YES;
    }
    else
    {
        return NO;
    }
}
 1
Author: P.J.Radadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-11 11:37:53