Creating and using platform-specific services
We have already created a service to handle navigation in the previous chapter. That custom navigation service specification was provided by the INavService
interface and there is a property of that interface type in the BaseViewModel
so that a concrete implementation of the service can be provided to the ViewModels as needed.
The benefit of using an interface to define platform-specific or third-party dependency services is that it can be used in an agnostic way in the ViewModels, and the concrete implementations can be provided via dependency injection. Those concrete implementations can be actual services, or even mocked services for unit testing the ViewModels, as we'll see in Chapter 8, Testing.
In addition to navigation, there are a couple of other platform-specific services our TripLog app could use to enrich its data and experience. In this section, we will create a location service that allows us to get specific geocoordinates...