GPS and Geolocation Services in Mobile Apps — What They Are and Methods for Obtaining Coordinates

Author: IT Sectr Published: 2026-03-22 Reading time: 8 min

GPS and geolocation services in mobile apps are APIs for determining the physical location of a device using satellites, Wi-Fi, and mobile networks. According to the Google Android Location Guide (2025), over 60% of mobile apps use location data for content personalization. The Fused Location Provider on Android combines multiple sources to improve accuracy and reduce power consumption.

Key Takeaways

  • GPS is a global satellite navigation system providing accuracy of 3-5 meters in open areas.
  • Geolocation services on Android and iOS provide APIs for obtaining coordinates via GPS, Wi-Fi, and cell towers.
  • FusedLocationProviderClient on Android combines GPS, Wi-Fi, and sensors for optimal balance of accuracy and power consumption.
  • CLLocationManager on iOS manages geolocation requests with accuracy settings and background mode.
  • Location permissions are divided into “while in use” and “always” — the latter requires additional justification.

What Is GPS and Geolocation Services

GPS (Global Positioning System) is a satellite navigation system consisting of 31 active satellites in orbit at an altitude of approximately 20,200 km. On mobile devices, the GPS chip receives signals from satellites and calculates coordinates based on trilateration — measuring the signal travel time from multiple satellites. Geolocation services in mobile OSes add data from Wi-Fi access points and cell towers to GPS for faster positioning (A-GPS) and improved accuracy indoors. According to GPS.gov (2024), civilian GPS accuracy is 3-5 meters in clear sky conditions and up to 15 meters in dense urban areas.

Additional Satellite Systems

Modern mobile devices support not only the American GPS system but also other global navigation satellite systems: Russia’s GLONASS (24 satellites), Europe’s Galileo (28 satellites), and China’s BeiDou. Support for multiple systems simultaneously improves accuracy and speed of positioning — the device can use up to 40 satellites from different systems to calculate its position. On iOS and Android, satellite system selection is handled automatically at the hardware chip level, and developers do not need to manage this.

How Location Determination Works

The process of determining location on a mobile device consists of several stages: collecting data from sources (satellites, Wi-Fi, cells), filtering and correcting errors, calculating coordinates, and delivering the result to the app. The operating system manages this process through a unified geolocation service that optimizes all sources for battery savings. Below are the three main sources of location data.

GPS and Satellite Navigation

Satellite navigation provides maximum accuracy (3-5 meters) but requires a clear view of the sky. Indoors or in dense urban areas, the GPS signal may be weakened or completely lost. Time to First Fix (TTFF) is 30-60 seconds for a cold start and 5-10 seconds for a hot start. A-GPS (Assisted GPS) speeds up the start by downloading satellite ephemeris data via the internet instead of waiting for data from the satellites.

Wi-Fi and Cell Tower Positioning

Wi-Fi positioning uses a database of MAC addresses of access points with known coordinates. Accuracy is 10-50 meters within Wi-Fi coverage. Cell towers provide accuracy from 100 meters to several kilometers depending on tower density. Combining all sources (Fused Location) allows obtaining coordinates with reasonable accuracy at minimal power consumption — especially when the GPS chip is turned off or satellite signals are unavailable.

Location Providers on Android and iOS

On both platforms, geolocation services are implemented through system APIs with varying degrees of abstraction. Android uses FusedLocationProviderClient from Google Play Services, iOS uses CLLocationManager from Core Location. Both APIs allow requesting a one-time position or subscribing to regular updates. Below is an example of obtaining coordinates on Android using the Fused Location Provider in Kotlin.

Getting Coordinates on Android

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("Location", "Lat: ${location.latitude}, Lng: ${location.longitude}")
        }
    }
}

if (checkLocationPermission()) {
    fusedClient.requestLocationUpdates(
        locationRequest, locationCallback,
        Looper.getMainLooper()
    )
}

In the example, LocationRequest is configured with PRIORITY_HIGH_ACCURACY — this enables GPS for maximum accuracy. setIntervalMillis sets the desired update interval (5 seconds), setMinUpdateIntervalMillis sets the minimum interval (2 seconds). The onLocationResult callback is invoked each time the system receives new coordinates. It is important to check the permission before calling requestLocationUpdates — otherwise the app will crash with a SecurityException.

Getting Coordinates on iOS

swift
import CoreLocation

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()

// MARK: - CLLocationManagerDelegate
func locationManager(
    _ manager: CLLocationManager,
    didUpdateLocations locations: [CLLocation]
) {
    guard let location = locations.last else { return }
    print("Location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}

On iOS, desiredAccuracy determines the request accuracy: kCLLocationAccuracyBest uses all available sources (GPS + Wi-Fi + cells). After requesting permission via requestWhenInUseAuthorization, the system shows a dialog to the user. The didUpdateLocations delegate receives an array of CLLocation objects with coordinates, altitude, speed, and course. To stop updates, call stopUpdatingLocation to save battery power.

Requesting Location Permissions

Access to geolocation requires explicit user permission on both platforms. On Android, the permissions ACCESS_FINE_LOCATION (GPS) and ACCESS_COARSE_LOCATION (Wi-Fi/cells) are used. Starting from Android 10, background access requires a separate permission ACCESS_BACKGROUND_LOCATION. On iOS, three levels are available: requestWhenInUseAuthorization (only when the app is active), requestAlwaysAuthorization (in the background), and temporary timestamps for precise positioning. Apple requires a mandatory description in Info.plist: NSLocationWhenInUseUsageDescription or NSLocationAlwaysAndWhenInUseUsageDescription. Without these keys, the permission request is ignored.

Power Consumption Optimization

Continuous use of GPS significantly drains the battery — up to 30% per hour of continuous operation at maximum accuracy. To optimize power consumption, it is recommended to use geolocation only when necessary and stop updates when the app goes into the background. On Android, FusedLocationProviderClient automatically switches between GPS and network sources depending on availability and request priority. On iOS, use the significant-change location service (startMonitoringSignificantLocationChanges) for updates with minimal power consumption — accuracy is lower (up to 500 meters), but battery is barely drained. Also practice batch processing: collect coordinates at 5-10 minute intervals and send them to the server in one request via WorkManager on Android or BGTaskScheduler on iOS. Reducing request frequency from 1 second to 30 seconds reduces geolocation power consumption by 85%.

Geolocation Use Cases

Geolocation is used in a wide range of mobile apps: from navigators to delivery services. The most common scenarios include displaying the user on a map, geotargeting ads, tracking couriers, geofencing for push notifications, and fitness activity tracking. Each scenario requires its own approach to accuracy and update frequency. Below is a table with configuration recommendations for different app types.

App TypeAccuracyIntervalBackground Mode
NavigationHIGH (GPS)1-2 secYes
DeliveryBALANCED (GPS+Wi-Fi)10-30 secYes
WeatherLOW (Wi-Fi/cells)OnceNo
Social NetworkBALANCEDOn openNo
FitnessHIGH (GPS)5-10 secYes

When designing geolocation functionality, it is important to consider that users may revoke permission at any time through system settings. The app should properly handle situations where geolocation is unavailable and show a clear explanation of why the functionality is limited.

Geofencing

Geofencing is a technology for creating virtual boundaries on a map. When these boundaries are crossed, the app receives a notification. On Android, geofences are implemented through GeofencingClient from Google Play Services, on iOS — through CLCircularRegion from Core Location. When entering or leaving a zone, the system wakes the app and sends an event even if the app is closed or minimized. This is used for push notifications when approaching a store, location-based task reminders, and IoT device automation. The maximum number of geofences is limited: 100 on Android, 20 on iOS simultaneously. The minimum zone radius is 50 meters on both platforms — otherwise the system may not trigger due to location determination inaccuracies. When entering a zone, the system starts an Intent on Android or calls the locationManager:didEnterRegion delegate on iOS.

Frequently Asked Questions

What is GPS in mobile devices?

GPS in a smartphone is a built-in receiver of satellite navigation system signals that determines coordinates with an accuracy of 3-5 meters. Devices also support GLONASS, Galileo, and BeiDou for improved accuracy and positioning speed.

How is GPS different from geolocation services?

GPS is only a satellite method of determining coordinates. Geolocation services combine GPS, Wi-Fi positioning, and cell tower data for faster and more energy-efficient location determination, especially indoors.

How to request location permission on iOS?

Call requestWhenInUseAuthorization() or requestAlwaysAuthorization() on a CLLocationManager instance. First, add NSLocationWhenInUseUsageDescription to Info.plist with a clear explanation of why geolocation is needed.

How to reduce GPS power consumption in an app?

Use FusedLocationProviderClient on Android and the significant-change location service on iOS. Increase the interval between requests to 10-30 seconds, disable updates when the screen is off, and apply batch sending of coordinates to the server.

Can I get location without GPS?

Yes, without GPS you can determine approximate location using Wi-Fi access points (accuracy 10-50 meters) or cell towers (accuracy 100-5000 meters). On Android, ACCESS_COARSE_LOCATION is used for this.

Summary

  • GPS is a satellite navigation system with 3-5 meter accuracy, supplemented by GLONASS, Galileo, and BeiDou.
  • Geolocation services combine GPS, Wi-Fi, and cell towers for fast and accurate coordinate determination.
  • Android uses FusedLocationProviderClient with LocationRequest to configure accuracy and update intervals.
  • iOS uses CLLocationManager with desiredAccuracy and the didUpdateLocations delegate for obtaining coordinates.
  • Permissions are divided into “while in use” and “always” — background access requires separate user approval.
  • GPS power consumption can be reduced by 85% by increasing the interval and using significant location changes.
  • Recommendation — choose accuracy and update interval based on the scenario: navigation requires HIGH, weather requires LOW.

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also