EVNotify is a hybrid mobile application which means that the main code itself is platform-independent. On top of that native code is additionally added to interact and communicate with native, platform-specific functions.
Nevertheless, EVNotify was for a long time only available on Android. This had several reasons. One major reason was, that EVNotify is an Open-Source project built and actively developed by me in my free time. For free. So I earn no money. Developing apps for iOS requires an Apple devices, such as a MacBook. This costs of course a lot of money. Furthermore, the iOS license is, compared to the Google license, very expensive.
While it costs only once 25$ for Android, Apple wants 99$ for the license - per year. That is a lot. Furthermore developing Android apps can be done on every operating system and does not require proprietary hardware.
Fortunately, a very friendly user of EVNotify, that lives near me, rent me a MacBook Air for a while (now I also bought a 2015 MacBook Pro by myself). With this, I “only” had to bought the iOS license.
The very first iOS version of EVNotify was born, a few months ago. It was a huge milestone for me, because it also required several modifications to the code and it was a complete new experience dealing with the Apple Review process. It was really hard, because so many things were rejected. Every app and update will be reviewed by Apple from real humans. Every review takes many days to finish. And every patch to this, you submit, starts this process from the very beginning.
But what was the problem? If you are using EVNotify on an iOS device, you already faced this issue. The app was only useful as a receiver. It could only receive the data, the Android device with the EVNotify app submitted.
But why you might be asking? This is because the Bluetooth handling for iOS was not working.
Unfortunately, Apple decided to not support the serial, classic Bluetooth protocol, all the OBD2 Dongles, that are currently working with EVNotify, are using. Apple only supports Bluetooth Low Energy devices. Technically they work completely different and this is the reason, why the Bluetooth communication with the Dongle, even with - in theory - compatible BLE Dongles, didn’t work.
I tried to get this functional. I spent many hours trying to figure out, how to implement this different protocol. Trying to understand, how BLE works, especially all the characterics, they are using, to retrieve, write and listen to data.
Due to several other pending todos in EVNotify, the iOS version was never updated. And the bluetooth handling never worked.
A few days ago I tried it again. And spent several hours again. Yesterday I jumped in the car after my normal work and focused to get this functional.
./activateHackerMode.sh > Hacker Mode activated
It looked really funny, I sat in the car for over an hour with the MacBook on my legs with several applications opened, the IDE, terminals, … Connected to a physical iPad in debug mode.
Finally…. After another hour .. The dongle suddenly flashes. And again. And again. And the cycle displaying the state of charge of the car showed the real state of charge.
It worked. It finally worked! 🎉🎉🎉🎉🎉🎉
What a milestone!
What does this mean for you now?
If you are an iOS user and you don’t want or don’t have an Android device, but for example an old iPhone you are not using anymore, you can use EVNotify now as a sender!
When exactly? In the next update. Stay tuned. Due to the manual review process of Apple and a few modifications I think it will be live somewhere next week.
Follow EVNotify on Twitter and stay always up to date!
Important: The recommended dongle for Android will not work with iOS. You need specific ones, please use the one (tested) listed here.