36 Stimmen

Wie kann ich überprüfen, ob Standortdienste für eine bestimmte App vor iOS 4.2 aktiviert sind?

Wie kann ich überprüfen, ob der Benutzer den Standort für mu app zugelassen hat? Normalerweise würde ich verwenden authorizationStatus Methode der CLLocationManager Klasse, aber sie ist nur in iOS 4.2 und neuer verfügbar. Ist es möglich, dies irgendwie zu erreichen, während immer noch mit SDK 4.2, so dass die App noch auf Geräten mit älteren Versionen von iOS laufen kann, oder muss ich das SDK downgraden? Und in diesem Zusammenhang benötige ich eine ähnliche Alternative für die locationServicesEnabled Methode vor iOS 4.0.

60voto

Martin Gordon Punkte 36034

Wenn Sie anrufen -startUpdatingLocation Wenn die Standortdienste vom Benutzer verweigert wurden, erhält der Delegierte des Standortmanagers einen Aufruf an -locationManager:didFailWithError: mit dem kCLErrorDenied Fehlercode. Dies funktioniert in allen Versionen von iOS.

37voto

EasyCoder Punkte 523

Im folgenden Code habe ich zwei Techniken kombiniert

    MKUserLocation *userLocation = map.userLocation;
    BOOL locationAllowed = [CLLocationManager locationServicesEnabled];
    BOOL locationAvailable = userLocation.location!=nil;

    if (locationAllowed==NO) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                                                        message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                                                       delegate:nil 
                                              cancelButtonTitle:@"OK" 
                                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    } else {
        if (locationAvailable==NO) 
            [self.map.userLocation addObserver:self forKeyPath:@"location" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];
    }

7voto

donkim Punkte 13124

Hmm Ich habe nicht daran gedacht, die authorizationStatus o locationServicesEnabled . Ich habe Folgendes getan:

MKUserLocation *userLocation = mapView.userLocation;

if (!userLocation.location) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                                                    message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles:nil];
    [alert show];
    [alert release];
    return;
}

Ich bin froh, dass es eine bessere Methode zur Überprüfung gibt, aber ich hatte bisher keine Probleme mit der Art und Weise, wie ich feststelle, ob meine App das GPS verwenden darf.

Ich hoffe, das hilft!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X