Getting ready for Apple CarPlay integration

It’s hardly a well-kept secret that the team at Eloy have set our sights on pushing mobile phone technology as far as possible. We’ve been pretty successful maximising voice interactions and are now turning our thoughts to deeper machine learning capabilities.

This meant we had to make some strategic decisions about how we built the app in the first place.

Somewhat controversially, we decided against using a framework such as React Native or Flutter as we were uncertain whether would have been provided the fluidity we may require in the future. 

Apple CarPlay

Taking Eloy out for a test drive

We also decided to build two bespoke apps for Apple and Android to ensure our users would have the best experience possible and we could customise features based on what was already included in the different operating systems, the most obvious example being Siri, which is locked into iOS.

Finally, enabling Eloy to work with Apple CarPlay and Android Auto was on our radar from the beginning which means whenever we added a feature to the app we had to think about how it would work when connected to a car infotainment system. 

It won’t be long before the vast majority of new cars include Apple CarPlay and Android Auto as standard. Car infotainment integration will enable a more efficient interface between drivers and connected car data, and provides an in-car platform on which to build connected car services that will transform how we interact with our cars.

We are already starting to see a range of solutions emerge, from reducing traffic to helping people find parking spaces more easily. Eloy’s ambition is to be the first app drivers turn to when they need help solving a problem on the road.

If you have not dug through the documentation to obtain Apple CarPlay entitlement you should be aware that, at the time of writing, you need to select which feature of the app will receive CarPlay entitlement from 6 distinct categories; Audio, Communication, EV-charging, Navigation, Parking, and Quick Food Ordering.

We chose the Navigation entitlement, as we viewed routing and directions as two of the most important functions of our app and with the work we had already done on integrating with Siri were confident we could layer on voice controls.

Although we have made good progress getting ready for our next app release which includes the CarPlay integration, we have been prevented from interacting as a team due to lockdown 3.0, and as a result, have had to get a little creative.

Lockdown CarPlay testing

One of the things that may surprise you about Eloy is that one of our co-founders doesn’t drive! It is also quite inconvenient for our development team (in other words all of us) to run to our cars each time we want to test a new feature or hunt for bugs. And debugging an app whilst trying to drive? Let’s not even think about how that could go wrong.

The answer to this challenge was to buy a digital media receiver that was CarPlay enabled and hook it up to a 12V battery in my home office, probably not something I could do if we were in a co-working space.

I chose a premium Sony unit and after it arrived the next day (Thanks Amazon!), and a little bit of wiring, it was powered up and ready to go.

Sony Media Unit

An essential bit of development kit

About a week later, we were ready for our first TestFlight release. With a little trepidation, I fired up the Sony unit and plugged in my phone. Our logo appeared! We were in action!

Sony Media Unit

There it is!

There were a few bugs to fix but being able to visualise what was going on made things so much easier and after a second TestFlight release our co-founder Damian was ready to take Eloy out on the road.

To complement what I see on the Sony unit, he has fitted his Skoda Kodiaq with a recording rig so he can share feedback about each trip, and we can debug any app crashes remotely minimising the risk of him actually crashing. 

Crossing new frontiers

Apple CarPlay is a relatively new platform, even in the constantly churning world of tech. And as many a developer can attest, new usually means hard.

When building an app on an old framework you can be certain that most paths have been well-trodden. The shortcuts, pathways, and crevasses have been mapped, catalogued, and discussed on StackOverflow or GitHub, and these conversations represent a body of knowledge accumulated over a lifetime’s worth of development time. Each dev contributing to a map here or there quickly adds up.

So when a dev comes to a new platform, each step in this new landscape might be a first or it might be a last. In practical terms, this often means forging ahead in one technical direction only to find that the way is blocked. The Sony infotainment unit has to be reset, and the Skoda Kodiaq circling the local ring road has to return home.

As a team, it is a very proud moment to see Eloy sitting alongside Waze, GoogleMaps and Chargepoint on the CarPlay screen. The last year has been tough with difficult working conditions, but making something like this work in a new environment makes poring through all those lines of code worth it.