<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.6.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 3.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreLocation",
  "identifier" : "/documentation/CoreLocation/CLLocationManager/startUpdatingLocation()",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Core Location"
    ],
    "preciseIdentifier" : "c:objc(cs)CLLocationManager(im)startUpdatingLocation"
  },
  "title" : "startUpdatingLocation()"
}
-->

# startUpdatingLocation()

Starts the generation of updates that report the user’s current location.

```
func startUpdatingLocation()
```

## Discussion

This method returns immediately. Calling this method causes the location manager to obtain an initial location fix (which may take several seconds) and notify your delegate by calling its [`locationManager(_:didUpdateLocations:)`](/documentation/CoreLocation/CLLocationManagerDelegate/locationManager(_:didUpdateLocations:)) method. After that, the receiver generates update events primarily when the value in the [`distanceFilter`](/documentation/CoreLocation/CLLocationManager/distanceFilter) property is exceeded. Updates may be delivered in other situations though. For example, the receiver may send another notification if the hardware gathers a more accurate location reading.

Calling this method several times in succession does not automatically result in new events being generated. Calling [`stopUpdatingLocation()`](/documentation/CoreLocation/CLLocationManager/stopUpdatingLocation()) in between, however, does cause a new initial event to be sent the next time you call this method.

If you start this service and your app is suspended, the system stops the delivery of events until your app starts running again (either in the foreground or background). If your app is terminated, the delivery of new location events stops altogether. Therefore, if your app needs to receive location events while in the background, it must include the `UIBackgroundModes` key (with the `location` value) in its `Info.plist` file.

In addition to your delegate object implementing the [`locationManager(_:didUpdateLocations:)`](/documentation/CoreLocation/CLLocationManagerDelegate/locationManager(_:didUpdateLocations:)) method, it should also implement the [`locationManager(_:didFailWithError:)`](/documentation/CoreLocation/CLLocationManagerDelegate/locationManager(_:didFailWithError:)) method to respond to potential errors.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)