I recently traded in my old BMW 5-series for a new X5 Diesel. One of the added benefits was being able to remote unlock/lock my car door remotely, send Points of Interest to my car, and locate my car using BMW's Remote App. Once you begin using it, it's fairly obvious that no one at BMW spends time thinking about user experience. A simple task such as locking my car doors remotely (If I think I forgot to do so) roughly goes like this:
Step 1: Open the App
Step 2: Enter your Passcode
Step 3: The App Launches, go to Control Tab?
Step 4: Hit Locking/Unlocking?
Step 5: Slide to Lock?
Step 6: OK, Slide to Lock.
Step 7: Wait (60+ Seconds)
After all of this, you're never really sure if the car actually locks. Needless to say, this isn't very user friendly at all. The rest of the functionality is basically the same.
To send a location to the car, you need to go to Google Local Search (See step 4) and search for where you want to go. Then you need to access a sub-menu and then tap send-to-vehicle.
I may be wrong, but I thought the point of this app was to make the user's life less-complicated. How is this any easier than pulling out my key and walking back to my car to lock it? It's not.
Mobile apps are all about removing friction from the user's life and bring small moments of joy throughout the user's day. I would make the case, that if your app doesn't do either, don't bother building it.
Seeing as I will have my car for the next 3 years, I decided to make my own BMW Remote App. One evening I sat down at my computer and took a look at what the existing BMW Remote App does. Under the hood, it's basically a simple networking app that hits a RESTful API over at BMW. Using common developer tools I documented their entire workflow. All in, it was about 2 hours. Now I was ready to build my own.
My main goal was to create a version of the app that I would love to use. I brought the core (important) functionality to the front of the app.
Step 1: Launch the App (icon pending)
Step 2: Hit Lock
Step 3: Wait ~30 Seconds (The BMW Roundel's center spins)
More: Locate my Car
Integration with Apple Maps
The most useful feature I added was integration with Apple Maps. Instead of finding where I want to go in one app. Then opening the BMW My Remote app to find the same place, I integrated my app as a directions handler in Apple Maps. Now I can find where I want to go using the OS's mapping solution and just send the directions straight to my car. They show up almost instantly.
I dont know what my plans are with this app, I built it for myself to use. I've given it to a few friends and they are enjoying it. I'm tentative to release this to the App Store for obvious reasons. For now, my plan is to reach out to BMW for permission to release this. We'll see what happens.
One common question that has come up every time I've shown this to someone is "Can you unlock any BMW?". The simple answer is No. You are required to login with your BMW Assist account. There isn't a way (that's public) to add a car to your account. So have no fear of someone malicious messing with your car.
I'll keep this blog up to date if/when I do anything in the App Store.