iOS Obtenir l'emplacement de l'utilisateur à l'aide de CLLocationManager


Exemple

1 - Inclure la structure CoreLocation.fr dans votre projet; Ceci est accompli en cliquant sur:

root directory -> build phases -> Link Binary With Libraries

Cliquez sur le bouton (+), recherchez CoreLocation.framework et cliquez sur Ajouter.

2- Modifiez le fichier info.plist pour demander l'autorisation d'utiliser l'emplacement de l'utilisateur en l'ouvrant en tant que code source. Ajoutez l'une des clés suivantes: paire de valeurs sous la balise pour demander l'utilisation de l'emplacement de l'utilisateur lorsque l'application est utilisée:

<key>NSLocationWhenInUseUsageDescription</key>
<string>message to display when asking for permission</string>

3- importer CoreLocation dans le ViewController qui l’utilisera.

import CoreLocation

4- Assurez-vous que votre ViewController est conforme au protocole CLLocationManagerDelagate

class ViewController: UIViewController,CLLocationManagerDelegate {}

Après ces étapes, nous pouvons créer un objet CLLocationManager en tant que variable d'instance et l'utiliser dans ViewController.

var manager:CLLocationManager!

Nous n'utilisons pas 'let' ici car nous allons modifier le gestionnaire pour spécifier son délégué, la distance minimale avant l'événement de mise à jour et sa précision

//initialize the manager
manager = CLLocationManager()

//specify delegate
manager.delegate = self

//set the minimum distance the phone needs to move before an update event is triggered (for example:  100 meters)
manager.distanceFilter = 100

//set Accuracy to any of the following depending on your use case

//let kCLLocationAccuracyBestForNavigation: CLLocationAccuracy
//let kCLLocationAccuracyBest: CLLocationAccuracy
//let kCLLocationAccuracyNearestTenMeters: CLLocationAccuracy
//let kCLLocationAccuracyHundredMeters: CLLocationAccuracy
//let kCLLocationAccuracyKilometer: CLLocationAccuracy
//let kCLLocationAccuracyThreeKilometers: CLLocationAccuracy

manager.desiredAccuracy = kCLLocationAccuracyBest

//ask the user for permission
manager.requestWhenInUseAuthorization()

//Start collecting location information
if #available(iOS 9.0, *) {
            
   manager.requestLocation()
            
 } else {
  
   manager.startUpdatingLocation()
  
  }

Maintenant, pour avoir accès aux mises à jour de l'emplacement, nous pouvons implémenter la fonction ci-dessous qui s'appelle les heures supplémentaires auxquelles le distanceFilter est atteint.

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {}

Le paramètre locations est un tableau d'objets CLLocation qui représente l'emplacement réel du périphérique. À partir de ces objets, vous pouvez accéder aux attributs suivants: coordinate,altitude, floor, horizontalAccuracy, verticalAccuracy, timestamp, description, course, speed et une distance(from:) fonction distance(from:) qui mesure la distance entre deux emplacements.

Remarque: lors de la demande d'autorisation pour la localisation, il existe deux types d'autorisation différents.

L'autorisation "En cours d'utilisation" n'autorise l'application qu'à recevoir votre position lorsque l'application est utilisée ou au premier plan.

L'autorisation «Toujours» donne à l'application des autorisations en arrière-plan, ce qui peut entraîner une diminution de l'autonomie de la batterie au cas où votre application serait fermée.

Le fichier Plist doit être ajusté si nécessaire.