---
title: Core Location
framework: corelocation
role: collection
role_heading: Framework
path: corelocation
---

# Core Location

Obtain the geographic location and orientation of a device.

## Overview

Overview Core Location provides services that determine a device’s geographic location, altitude, and orientation, or its position relative to a nearby iBeacon device. The framework gathers data using all available components on the device, including the Wi-Fi, GPS, Bluetooth, magnetometer, barometer, and cellular hardware. You use instances of the CLLocationManager class to configure, start, and stop the Core Location services. A location manager object supports the following location-related activities: To use location services, call liveUpdates(_:) to obtain an update stream, then asynchronously iterate over that stream to receive and process location updates, and receive diagnostic properties to understand if and why location updates don’t arrive. If needed, the system prompts the user to grant or deny the request. An initial prompt is shown in the example below:

On iOS devices, users can change location service settings at any time in the Settings app, affecting individual apps or the device as a whole. Your app receives events, including authorization changes, by observing asynchronous sequences from CLLocationUpdate and CLMonitor.

## Topics

### 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)
- [CLLocationManager](corelocation/cllocationmanager.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)

### Authorization

- [Requesting authorization to use location services](corelocation/requesting-authorization-to-use-location-services.md)
- [Suspending authorization requests](corelocation/suspending-authorization-requests.md)
- [CLAuthorizationStatus](corelocation/clauthorizationstatus.md)
- [CLAccuracyAuthorization](corelocation/claccuracyauthorization.md)
- [NSLocationAlwaysAndWhenInUseUsageDescription](bundleresources/information-property-list/nslocationalwaysandwheninuseusagedescription.md)
- [NSLocationWhenInUseUsageDescription](bundleresources/information-property-list/nslocationwheninuseusagedescription.md)
- [NSLocationUsageDescription](bundleresources/information-property-list/nslocationusagedescription.md)
- [NSLocationDefaultAccuracyReduced](bundleresources/information-property-list/nslocationdefaultaccuracyreduced.md)
- [NSLocationAlwaysUsageDescription](bundleresources/information-property-list/nslocationalwaysusagedescription.md)

### Monitoring

- [CLMonitor](corelocation/clmonitor-2r51v.md)

### Location updates

- [Getting the current location of a device](corelocation/getting-the-current-location-of-a-device.md)
- [Handling location updates in the background](corelocation/handling-location-updates-in-the-background.md)
- [Creating a location push service extension](corelocation/creating-a-location-push-service-extension.md)
- [CLLocation](corelocation/cllocation.md)
- [CLLocationCoordinate2D](corelocation/cllocationcoordinate2d.md)
- [CLFloor](corelocation/clfloor.md)
- [CLVisit](corelocation/clvisit.md)
- [CLLocationSourceInformation](corelocation/cllocationsourceinformation.md)
- [Monitoring location changes with Core Location](corelocation/monitoring-location-changes-with-core-location.md)
- [CLServiceSession](corelocation/clservicesession-pt7n.md)

### Region monitoring

- [Monitoring the user’s proximity to geographic regions](corelocation/monitoring-the-user-s-proximity-to-geographic-regions.md)
- [CLRegion](corelocation/clregion.md)

### iBeacon

- [Ranging for Beacons](corelocation/ranging-for-beacons.md)
- [Determining the proximity to an iBeacon device](corelocation/determining-the-proximity-to-an-ibeacon-device.md)
- [Turning an iOS device into an iBeacon device](corelocation/turning-an-ios-device-into-an-ibeacon-device.md)
- [CLBeacon](corelocation/clbeacon.md)
- [CLCondition](corelocation/clcondition-swift.protocol.md)

### Compass headings

- [Getting heading and course information](corelocation/getting-heading-and-course-information.md)
- [CLHeading](corelocation/clheading.md)

### Geocoding

- [Converting between coordinates and user-friendly place names](corelocation/converting-between-coordinates-and-user-friendly-place-names.md)
- [Converting a user’s location to a descriptive placemark](corelocation/converting-a-user-s-location-to-a-descriptive-placemark.md)
- [CLGeocoder](corelocation/clgeocoder.md)
- [CLPlacemark](corelocation/clplacemark.md)

### Location push service extension

- [Location Push Service Extension](bundleresources/entitlements/com.apple.developer.location.push.md)
- [CLLocationPushServiceExtension](corelocation/cllocationpushserviceextension.md)
- [CLLocationPushServiceError](corelocation/cllocationpushserviceerror-swift.struct.md)
- [CLLocationPushServiceErrorDomain](corelocation/cllocationpushserviceerrordomain.md)
- [CLLocationPushServiceError.Code](corelocation/cllocationpushserviceerror-swift.struct/code.md)

### Errors

- [CLError](corelocation/clerror-swift.struct.md)
- [kCLErrorDomain](corelocation/kclerrordomain.md)
- [kCLErrorUserInfoAlternateRegionKey](corelocation/kclerroruserinfoalternateregionkey.md)

### Deprecated

- [Deprecated](corelocation/deprecated.md)

### Reference

- [Core Location Constants](corelocation/core-location-constants.md)
- [Core Location Functions](corelocation/core-location-functions.md)

### Protocols

- [CLBodyIdentifiable](corelocation/clbodyidentifiable.md)
