CoreLocation APIs provide the Location updates in iOS. We need to define a protocol around the CoreLocation features to make it easy to mock, and inject as dependency. Let’s name the protocol as LocationProvidable, which that provides location updates to the ViewModel using the platform API. protocol LocationProvidable { var listener: LocationObservable? { get set } func setListener(listener: LocationObservable) func startLocationUpdates() func getCurrentLocation() -> (Double, Double) } The...