iOS Demander l'autorisation d'utiliser les services de localisation


Exemple

Vérifiez le statut d'autorisation de l'application avec:

//Swift
let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()

//Objective-C
CLAuthorizationStatus status = [CLLocationManager authorizationStatus];

Testez le statut par rapport aux constantes suivantes:

//Swift
switch status {
case .NotDetermined:
    // Do stuff
case .AuthorizedAlways:
    // Do stuff
case .AuthorizedWhenInUse:
    // Do stuff
case .Restricted:
    // Do stuff
case .Denied:
    // Do stuff
}

//Objective-C
switch (status) {
    case kCLAuthorizationStatusNotDetermined:
        
        //The user hasn't yet chosen whether your app can use location services or not.
        
        break;
        
    case kCLAuthorizationStatusAuthorizedAlways:
        
        //The user has let your app use location services all the time, even if the app is in the background.
        
        break;
        
    case kCLAuthorizationStatusAuthorizedWhenInUse:
        
        //The user has let your app use location services only when the app is in the foreground.
        
        break;
        
    case kCLAuthorizationStatusRestricted:
        
        //The user can't choose whether or not your app can use location services or not, this could be due to parental controls for example.
        
        break;
        
    case kCLAuthorizationStatusDenied:
        
        //The user has chosen to not let your app use location services.
        
        break;
        
    default:
        break;
}

Obtenir l'autorisation de service de localisation alors que l'application est en cours d'utilisation

Emplacement lors de l'utilisation du dialogue d'utilisation

La méthode la plus simple consiste à initialiser le gestionnaire d'emplacement en tant que propriété de votre contrôleur de vue racine et à placer la demande d'autorisation dans son viewDidLoad .

Cela ouvre le contrôleur d'alerte qui demande l'autorisation:

//Swift
let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()

//Objective-C
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestWhenInUseAuthorization];

Ajoutez la clé NSLocationWhenInUseUsageDescription à votre Info.plist . La valeur sera utilisée dans l'étiquette de message du contrôleur d'alertes.

entrer la description de l'image ici


Obtenir toujours l'autorisation de service de localisation

entrer la description de l'image ici

Pour demander l'autorisation d'utiliser les services de localisation même lorsque l'application n'est pas active, utilisez plutôt l'appel suivant:

//Swift
locationManager.requestAlwaysAuthorization()

//Objective-C
[locationManager requestAlwaysAuthorization];

Ajoutez ensuite la clé NSLocationAlwaysUsageDescription à votre Info.plist . Là encore, la valeur sera utilisée dans l'étiquette de message du contrôleur d'alertes.

entrer la description de l'image ici