---
title: CLLocationManager
framework: corelocation
role: symbol
role_heading: Class
path: corelocation/cllocationmanager
---

# CLLocationManager

The object you use to start and stop the delivery of location-related events to your app.

## Declaration

```swift
class CLLocationManager
```

## Mentioned in

Determining the proximity to an iBeacon device Configuring your app to use location services Converting between coordinates and user-friendly place names Getting heading and course information Getting the current location of a device Requesting authorization to use location services Monitoring the user’s proximity to geographic regions Supporting live updates in SwiftUI and Mac Catalyst apps

## Overview

Overview A CLLocationManager object is the central place to manage your app’s location-related behaviors. Use a location-manager object to configure, start, and stop location services. You might use these services to: Track large or small changes in the user’s current location with a configurable degree of accuracy. Report heading changes from the onboard compass. Monitor geographical regions of interest and generate events when someone enters or leaves those regions. Report the range to nearby Bluetooth beacons. Create one or more location-manager objects in your app and use them where you need location data. After you create a location-manager object, configure it so that Core Location knows how often to report location changes. In particular, configure the distanceFilter and desiredAccuracy properties with values that reflect your app’s needs. A CLLocationManager object reports all location-related updates to its delegate object, which is an object that conforms to the CLLocationManagerDelegate protocol. Assign the delegate immediately when you configure your location manager, because the system reports the app’s authorization status to the delegate’s locationManagerDidChangeAuthorization(_:) method after the location manager finishes initializing itself.  Core Location calls the methods of your delegate object using the RunLoop of the thread on which you initialized the CLLocationManager object. That thread must itself have an active RunLoop, like the one found in your app’s main thread. For more information, see Configuring your app to use location services.

## Topics

### Determining the availability of services

- [significantLocationChangeMonitoringAvailable()](corelocation/cllocationmanager/significantlocationchangemonitoringavailable().md)
- [headingAvailable()](corelocation/cllocationmanager/headingavailable().md)
- [isAuthorizedForWidgetUpdates](corelocation/cllocationmanager/isauthorizedforwidgetupdates.md)
- [accuracyAuthorization](corelocation/cllocationmanager/accuracyauthorization.md)
- [isMonitoringAvailable(for:)](corelocation/cllocationmanager/ismonitoringavailable(for:).md)
- [isRangingAvailable()](corelocation/cllocationmanager/israngingavailable().md)
- [locationServicesEnabled()](corelocation/cllocationmanager/locationservicesenabled().md)

### Receiving data from location services

- [delegate](corelocation/cllocationmanager/delegate.md)
- [CLLocationManagerDelegate](corelocation/cllocationmanagerdelegate.md)

### Requesting authorization for location services

- [requestWhenInUseAuthorization()](corelocation/cllocationmanager/requestwheninuseauthorization().md)
- [requestAlwaysAuthorization()](corelocation/cllocationmanager/requestalwaysauthorization().md)
- [requestTemporaryFullAccuracyAuthorization(withPurposeKey:completion:)](corelocation/cllocationmanager/requesttemporaryfullaccuracyauthorization(withpurposekey:completion:).md)
- [requestTemporaryFullAccuracyAuthorization(withPurposeKey:)](corelocation/cllocationmanager/requesttemporaryfullaccuracyauthorization(withpurposekey:).md)
- [authorizationStatus](corelocation/cllocationmanager/authorizationstatus-swift.property.md)
- [CLAuthorizationStatus](corelocation/clauthorizationstatus.md)
- [NSLocationDefaultAccuracyReduced](bundleresources/information-property-list/nslocationdefaultaccuracyreduced.md)
- [NSLocationAlwaysAndWhenInUseUsageDescription](bundleresources/information-property-list/nslocationalwaysandwheninuseusagedescription.md)

### Specifying distance and accuracy

- [distanceFilter](corelocation/cllocationmanager/distancefilter.md)
- [CLLocationDistanceMax](corelocation/cllocationdistancemax.md)
- [kCLDistanceFilterNone](corelocation/kcldistancefilternone.md)
- [CLLocationDistance](corelocation/cllocationdistance.md)
- [desiredAccuracy](corelocation/cllocationmanager/desiredaccuracy.md)
- [CLLocationAccuracy](corelocation/cllocationaccuracy.md)

### Running the standard location service

- [startUpdatingLocation()](corelocation/cllocationmanager/startupdatinglocation().md)
- [stopUpdatingLocation()](corelocation/cllocationmanager/stopupdatinglocation().md)
- [requestLocation()](corelocation/cllocationmanager/requestlocation().md)
- [pausesLocationUpdatesAutomatically](corelocation/cllocationmanager/pauseslocationupdatesautomatically.md)
- [allowsBackgroundLocationUpdates](corelocation/cllocationmanager/allowsbackgroundlocationupdates.md)
- [showsBackgroundLocationIndicator](corelocation/cllocationmanager/showsbackgroundlocationindicator.md)
- [activityType](corelocation/cllocationmanager/activitytype.md)
- [CLActivityType](corelocation/clactivitytype.md)

### Running the significant change location service

- [startMonitoringSignificantLocationChanges()](corelocation/cllocationmanager/startmonitoringsignificantlocationchanges().md)
- [stopMonitoringSignificantLocationChanges()](corelocation/cllocationmanager/stopmonitoringsignificantlocationchanges().md)

### Running the visits location service

- [startMonitoringVisits()](corelocation/cllocationmanager/startmonitoringvisits().md)
- [stopMonitoringVisits()](corelocation/cllocationmanager/stopmonitoringvisits().md)

### Running the heading service

- [startUpdatingHeading()](corelocation/cllocationmanager/startupdatingheading().md)
- [stopUpdatingHeading()](corelocation/cllocationmanager/stopupdatingheading().md)
- [dismissHeadingCalibrationDisplay()](corelocation/cllocationmanager/dismissheadingcalibrationdisplay().md)
- [headingFilter](corelocation/cllocationmanager/headingfilter.md)
- [kCLHeadingFilterNone](corelocation/kclheadingfilternone.md)
- [CLLocationDegrees](corelocation/cllocationdegrees.md)
- [headingOrientation](corelocation/cllocationmanager/headingorientation.md)
- [CLDeviceOrientation](corelocation/cldeviceorientation.md)

### Running the region-monitoring service

- [monitoredRegions](corelocation/cllocationmanager/monitoredregions.md)
- [maximumRegionMonitoringDistance](corelocation/cllocationmanager/maximumregionmonitoringdistance.md)

### Performing beacon ranging

- [startRangingBeacons(satisfying:)](corelocation/cllocationmanager/startrangingbeacons(satisfying:).md)
- [stopRangingBeacons(satisfying:)](corelocation/cllocationmanager/stoprangingbeacons(satisfying:).md)
- [rangedBeaconConstraints](corelocation/cllocationmanager/rangedbeaconconstraints.md)

### Monitoring location push notifications

- [startMonitoringLocationPushes(completion:)](corelocation/cllocationmanager/startmonitoringlocationpushes(completion:).md)
- [stopMonitoringLocationPushes()](corelocation/cllocationmanager/stopmonitoringlocationpushes().md)

### Getting recent location and heading data

- [location](corelocation/cllocationmanager/location.md)
- [heading](corelocation/cllocationmanager/heading.md)

### Deferring location updates

- [CLTimeIntervalMax](corelocation/cltimeintervalmax.md)

### Deprecated

- [Deprecated symbols](corelocation/deprecated-symbols.md)

### Instance Methods

- [requestHistoricalLocations(purposeKey:sampleCount:completionHandler:)](corelocation/cllocationmanager/requesthistoricallocations(purposekey:samplecount:completionhandler:).md)

### Instance Properties

- [headingBody](corelocation/cllocationmanager/headingbody.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### Essentials

- [Configuring your app to use location services](corelocation/configuring-your-app-to-use-location-services.md)
- [Supporting live updates in SwiftUI and Mac Catalyst apps](corelocation/supporting-live-updates-in-swiftui-and-mac-catalyst-apps.md)
- [CLBackgroundActivitySession](corelocation/clbackgroundactivitysession-3mzv3.md)
- [CLLocationUpdate](corelocation/cllocationupdate.md)
- [Adopting live updates in Core Location](corelocation/adopting-live-updates-in-core-location.md)
- [Monitoring location changes with Core Location](corelocation/monitoring-location-changes-with-core-location.md)
