Mastering the fundamentals of CoreLocation for iOS using Swift.

Аλέξιος
3 min readOct 3, 2021
Picture 1 — The Apple Maps application logo.

Nowadays, it is impossible to be lost in an enormous city as people often use GPS in their smartphones because it is so simple and convenient to open the required application rather than looking for a place on the printed map.

Perhaps, this geopositioning system kindled the interest of how it might be devised inside. So, here I am going to elucidate the pith of CoreLocation internals from the perspectives of iOS and using the Swift programming language.

Generally speaking, the CoreLocation is the none-UI way of determining the location where the basic object is “CLLocation”, consisting of properties like:

  1. Coordinate
  2. Altitude
  3. Horizontal and vertical accuracy
  4. Timestamp
  5. Speed
  6. Course

By the way, the “kCLLocationAccuracy“ property has six states for handling location such as:

  1. Best for Navigation.
  2. AccuracyBest
  3. NearestTenMeters
  4. HundredMeters
  5. Kilometer
  6. ThreeKilometers

Irrefutably, the more accuracy you request, the more battery will be used for location tracking. There are three ways of detecting the location, for example:

  • Using cellular tower triangulation (not precise, but low powered)
  • Wi-Fi node database lookup (more accurate, more power)
  • GPS (precise, power consumptive)

To track the location coordinates, you have to do the following steps:

  • Firstly, import the CoreLocation framework to use the mandatory functions for GPS module initialization. Additionally, define the class with the name conforming to the CLLocationManagerDelegate” protocol and inherit the “NSObject” class.
  • Secondly, assign the variables to the location manager and to the current location where will be stored latitude and longitude.
let locationManager = CLLocationManager()    
var currentLocation: CLLocation!
  • Thirdly, set the location manager delegate to self and define the location manager's behavior, if it has the desired location accuracy as it is written below in the class initializer. As for me, I prefer the best location precision.
override init() {
super.init();
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
}
  • Also, it is compulsory to ask the user whether he wants to use the location and to display the explanatory message.

There are two methods available, such as “requestWhenInUseAuthorization” and “requestAlwaysAuthorization”. Unless authorization is granted by the user, the application’s GPS authorizationStatus will be “NotDetermined”.

locationManager.requestWhenInUseAuthorization()

Moreover, add your GPS request message to the Info.plist file here:

Privacy - Location Always and When in use usage description

Here is the message below that will be displayed during the first application launch requesting permission to the location access if the “locationAuthStatus” method is called. Then, your location coordinates will be gained via GPS, cell tower, or Wi-Fi and printed in the terminal XCode window.

Picture 2— The iOS location permission request message.

Ultimately, to make this candid, I attached the demo code displaying the steps to access the CoreLocation on iOS.

Happy coding!

--

--