This app tracks the user’s precise location. It also keeps track of the user’s movements and records an event every 10 meters or so.


How to run the project:

Download the zip folder and open on XCode.

Implementation decisions and trade-offs I made:

I implemented a table view with a list of significant move events and the time passed from that event. Every 10 meters or so, the app will display a message and a new event will appear on the table view. I added buttons to the map so the user can zoom in and out. The application is intended to work mostly in the foreground. I originally planned to use the method startMonitoringSignificantLocationChanges() in viewDidLoad() both for background location tracking and also for more power-friendly activities. However, since I suspect it would not track movements as short as 10 meters, I mostly relied on didUpdateLocations instead.

Any architectural considerations and reasonings:

I considered that 10 meters is a very short distance for users who run or drive, therefore sending UIAlerts for every event could stack up a lot of alerts. I decided to display messages that disappear on their own after 5 seconds so to not overwhelm the user with alerts.

Areas of focus:

Location tracking precision, user’s experience, bug fixing, code precision.

Any copied code, references and 3rd party libraries:

I used UIKit, MapKit and CoreLocation. I referred to Apple’s documents, my own material which I originally got by reference to StackOverflow, and new StackOverflow research. Here are the ones I referred to today:

• significant-change location service:

• reverse geocode location:


How long you worked on the app for:

I worked on the code for a total of 4-5 hours and spent an additional 2-3 hours reviewing my code, testing (unit and device) and fixing my code to make it more readable.

Any additional information:

It wasn’t clear whether the app was supposed to work in the background, so I focused on foreground work.


View Github