Les services GPS et de géolocalisation dans les applications mobiles sont des API permettant de déterminer la position physique d’un appareil à l’aide de satellites, du Wi-Fi et des réseaux mobiles. Selon le Google Android Location Guide (2025), plus de 60% des applications mobiles utilisent les données de localisation pour personnaliser le contenu. Le Fused Location Provider sur Android combine plusieurs sources pour améliorer la précision et réduire la consommation d’énergie.
Points clés
GPS (Global Positioning System) est un système de navigation par satellite composé de 31 satellites actifs en orbite à une altitude d’environ 20 200 km. Sur les appareils mobiles, la puce GPS reçoit les signaux des satellites et calcule les coordonnées par trilatération — mesure du temps de propagation du signal de plusieurs satellites. Les services de géolocalisation dans les systèmes d’exploitation mobiles ajoutent les données des points d’accès Wi-Fi et des antennes relais au GPS pour un positionnement plus rapide (A-GPS) et une meilleure précision à l’intérieur. Selon GPS.gov (2024), la précision du GPS civil est de 3 à 5 mètres par ciel dégagé et jusqu’à 15 mètres dans les zones urbaines denses.
Les appareils mobiles modernes prennent en charge non seulement le système GPS américain, mais aussi d’autres systèmes mondiaux de navigation par satellite : le GLONASS russe (24 satellites), le Galileo européen (28 satellites) et le BeiDou chinois. La prise en charge simultanée de plusieurs systèmes améliore la précision et la vitesse du positionnement — l’appareil peut utiliser jusqu’à 40 satellites de différents systèmes pour calculer sa position. Sur iOS et Android, la sélection du système satellitaire se fait automatiquement au niveau de la puce matérielle, les développeurs n’ont pas besoin de gérer cela.
Le processus de détermination de la position sur un appareil mobile comprend plusieurs étapes : collecte des données provenant des sources (satellites, Wi-Fi, cellules), filtrage et correction des erreurs, calcul des coordonnées et transmission du résultat à l’application. Le système d’exploitation gère ce processus via un service de géolocalisation unifié qui optimise toutes les sources pour économiser la batterie. Voici les trois principales sources de données de localisation.
La navigation par satellite offre la précision maximale (3 à 5 mètres), mais nécessite une vue dégagée du ciel. À l’intérieur ou dans les zones urbaines denses, le signal GPS peut être affaibli ou totalement perdu. Le temps de première fixation (TTFF) est de 30 à 60 secondes pour un démarrage à froid et de 5 à 10 secondes pour un démarrage à chaud. L’A-GPS (GPS assisté) accélère le démarrage en téléchargeant les données d’éphémérides des satellites via Internet au lieu d’attendre les données des satellites.
Le positionnement Wi-Fi utilise une base de données d’adresses MAC de points d’accès avec des coordonnées connues. La précision est de 10 à 50 mètres dans la couverture Wi-Fi. Les antennes relais offrent une précision de 100 mètres à plusieurs kilomètres selon la densité des antennes. La combinaison de toutes les sources (Fused Location) permet d’obtenir des coordonnées avec une précision raisonnable et une consommation d’énergie minimale — surtout lorsque la puce GPS est désactivée ou que les signaux satellites ne sont pas disponibles.
Sur les deux plateformes, les services de géolocalisation sont implémentés via des API système avec différents niveaux d’abstraction. Android utilise FusedLocationProviderClient de Google Play Services, iOS utilise CLLocationManager de Core Location. Les deux API permettent de demander une position unique ou de s’abonner à des mises à jour régulières. Voici un exemple d’obtention de coordonnées sur Android avec le Fused Location Provider en Kotlin.
val fusedClient = LocationServices.getFusedLocationProviderClient(this)
val locationRequest = LocationRequest.Builder(
Priority.PRIORITY_HIGH_ACCURACY
)
.setIntervalMillis(5000)
.setMinUpdateIntervalMillis(2000)
.build()
val locationCallback = object : LocationCallback() {
override fun onLocationResult(result: LocationResult) {
result.lastLocation?.let { location ->
Log.d("Position", "Lat: ${location.latitude}, Lng: ${location.longitude}")
}
}
}
if (checkLocationPermission()) {
fusedClient.requestLocationUpdates(
locationRequest, locationCallback,
Looper.getMainLooper()
)
}
Dans l’exemple, LocationRequest est configuré avec PRIORITY_HIGH_ACCURACY — cela active le GPS pour une précision maximale. setIntervalMillis définit l’intervalle de mise à jour souhaité (5 secondes), setMinUpdateIntervalMillis définit l’intervalle minimum (2 secondes). Le callback onLocationResult est invoqué chaque fois que le système reçoit de nouvelles coordonnées. Il est important de vérifier l’autorisation avant d’appeler requestLocationUpdates — sinon l’application plantera avec une SecurityException.
import CoreLocation
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
// MARQUE: - CLLocationManagerDelegate
func locationManager(
_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation]
) {
guard let location = locations.last else { return }
print("Location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}
Sur iOS, desiredAccuracy détermine la précision de la demande : kCLLocationAccuracyBest utilise toutes les sources disponibles (GPS + Wi-Fi + cellules). Après avoir demandé l’autorisation via requestWhenInUseAuthorization, le système affiche une boîte de dialogue à l’utilisateur. Le délégué didUpdateLocations reçoit un tableau d’objets CLLocation avec les coordonnées, l’altitude, la vitesse et le cap. Pour arrêter les mises à jour, appelez stopUpdatingLocation pour économiser la batterie.
L’accès à la géolocalisation nécessite une autorisation explicite de l’utilisateur sur les deux plateformes. Sur Android, les autorisations ACCESS_FINE_LOCATION (GPS) et ACCESS_COARSE_LOCATION (Wi-Fi/cellules) sont utilisées. À partir d’Android 10, l’accès en arrière-plan nécessite une autorisation séparée ACCESS_BACKGROUND_LOCATION. Sur iOS, trois niveaux sont disponibles : requestWhenInUseAuthorization (uniquement lorsque l’application est active), requestAlwaysAuthorization (en arrière-plan) et des horodatages temporaires pour un positionnement précis. Apple exige une description obligatoire dans Info.plist : NSLocationWhenInUseUsageDescription ou NSLocationAlwaysAndWhenInUseUsageDescription. Sans ces clés, la demande d’autorisation est ignorée.
L’utilisation continue du GPS épuise considérablement la batterie — jusqu’à 30% par heure de fonctionnement continu à précision maximale. Pour optimiser la consommation d’énergie, il est recommandé d’utiliser la géolocalisation uniquement lorsque c’est nécessaire et d’arrêter les mises à jour lorsque l’application passe en arrière-plan. Sur Android, FusedLocationProviderClient bascule automatiquement entre le GPS et les sources réseau en fonction de la disponibilité et de la priorité de la demande. Sur iOS, utilisez le service de changement significatif de position (startMonitoringSignificantLocationChanges) pour des mises à jour avec une consommation d’énergie minimale — la précision est moindre (jusqu’à 500 mètres), mais la batterie est presque pas sollicitée. Pratiquez également le traitement par lots : collectez les coordonnées à intervalles de 5 à 10 minutes et envoyez-les au serveur en une seule demande via WorkManager sur Android ou BGTaskScheduler sur iOS. La réduction de la fréquence des demandes de 1 seconde à 30 secondes diminue la consommation d’énergie de la géolocalisation de 85%.
La géolocalisation est utilisée dans une large gamme d’applications mobiles : des navigateurs aux services de livraison. Les scénarios les plus courants incluent l’affichage de l’utilisateur sur une carte, le ciblage géographique des publicités, le suivi des coursiers, le géorepérage pour les notifications push et le suivi des activités sportives. Chaque scénario nécessite sa propre approche en matière de précision et de fréquence de mise à jour. Voici un tableau avec les recommandations de configuration pour différents types d’applications.
| Type d’application | Précision | Intervalle | Mode arrière-plan |
|---|---|---|---|
| Navigation | HIGH (GPS) | 1-2 s | Oui |
| Livraison | BALANCED (GPS+Wi-Fi) | 10-30 s | Oui |
| Météo | LOW (Wi-Fi/cellules) | Une fois | Non |
| Réseau social | BALANCED | À l’ouverture | Non |
| Fitness | HIGH (GPS) | 5-10 s | Oui |
Lors de la conception de fonctionnalités de géolocalisation, il est important de considérer que les utilisateurs peuvent révoquer l’autorisation à tout moment via les paramètres système. L’application doit gérer correctement les situations où la géolocalisation n’est pas disponible et afficher une explication claire de la raison pour laquelle la fonctionnalité est limitée.
Geofencing est une technologie permettant de créer des limites virtuelles sur une carte. Lorsque ces limites sont franchies, l’application reçoit une notification. Sur Android, les géorepérages sont implémentés via GeofencingClient de Google Play Services, sur iOS — via CLCircularRegion de Core Location. Lors de l’entrée ou de la sortie d’une zone, le système réveille l’application et envoie un même si l’application est fermée ou minimisée. Cela est utilisé pour les notifications push à l’approche d’un magasin, les rappels de tâches basés sur la position et l’automatisation des appareils IoT. Le nombre maximum de géorepérages est limité : 100 sur Android, 20 sur iOS simultanément. Le rayon minimum de la zone est de 50 mètres sur les deux plateformes — sinon le système peut ne pas se déclencher en raison de l’imprécision de la détermination de la position. Lors de l’entrée dans une zone, le système lance un Intent sur Android ou appelle le délégué locationManager:didEnterRegion sur iOS.
Questions fréquentes
Le GPS dans un smartphone est un récepteur intégré des signaux du système de navigation par satellite qui détermine les coordonnées avec une précision de 3 à 5 mètres. Les appareils prennent également en charge GLONASS, Galileo et BeiDou pour améliorer la précision et la vitesse de positionnement.
Le GPS est uniquement une méthode satellite de détermination des coordonnées. Les services de géolocalisation combinent le GPS, le positionnement Wi-Fi et les données des antennes relais pour une détermination plus rapide et plus économe en énergie, en particulier à l’intérieur.
Appelez requestWhenInUseAuthorization() ou requestAlwaysAuthorization() sur une instance de CLLocationManager. Ajoutez d’abord NSLocationWhenInUseUsageDescription dans Info.plist avec une explication claire de la raison pour laquelle la géolocalisation est nécessaire.
Utilisez FusedLocationProviderClient sur Android et le service de changement significatif de position sur iOS. Augmentez l’intervalle entre les demandes à 10-30 secondes, désactivez les mises à jour lorsque l’écran est éteint et appliquez l’envoi par lots des coordonnées au serveur.
Oui, sans GPS vous pouvez déterminer la position approximative à l’aide de points d’accès Wi-Fi (précision de 10 à 50 mètres) ou d’antennes relais (précision de 100 à 5000 mètres). Sur Android, ACCESS_COARSE_LOCATION est utilisé pour cela.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi