Building an iOS App for IoT-Connected Breathalyzers
In just 8 months, we built an intuitive IoT-powered iOS app for a suite of smart devices aimed at improving personal health.
Personal health device company
Mobile App Development, Product Design
Swift, Ruby on Rails, Bluetooth
A US manufacturer of digital health electronics with distribution in 20,000 retail store locations across North America needed a consumer-grade application to complement their line of sobriety testing devices. The company had previously developed an MVP of the application, but had reliability issues, suffered global outages and had earned only two stars from customers in the App Store. They wanted to build an IoT mobile application that was as consistent, reliable, and technologically-advanced as their trusted smart devices.
Very has helped us accomplish our goals, doing it on time and on budget. The new app has enhanced our product offering at national retailers and solidified our position as the market leader."
CEO, PERSONAL HEALTH DEVICE COMPANY
The client came to Very wanting to develop an app for the world’s first smart device for substance abuse monitoring. Their team had already developed an MVP application, tested it with users, and established market demand for the product. Now it was time to create a robust, stable, and scalable version of the application that was accurate, mobile, and easy to use for both on-demand and random testing.
The application needed to work for four different types of users:
- Self-monitored testers: Can take tests and set their own testing schedule
- Tester: Can take tests but can’t change their testing schedule
- Monitor: Can see the tester’s test results, update the testing schedule, and request a test
- Accountability partner: Can only view test results
When monitoring others, monitors would receive notifications for all test activity on their smart devices. Test subjects would simply use the monitoring device, a photo would be taken, the test time, date and location are confirmed, and test results would be delivered in real-time.
With real-time results that can be viewed on the monitor’s smartphone, monitors can have peace of mind knowing that a family member, friend or loved one is sober. And employers would know that their employees are safe—and on the job!
The client’s team already had wireframes that had been tested with users, giving us crucial context about what users wanted from the app. Very used the existing wireframes as a foundation and extended them to include the user’s journey throughout the app. Once the wireframes were complete, we worked closely with the client's product team to solidify the high-fidelity look and feel of the next generation application. The focus here is the data itself, so we needed to create a user experience that made it as easy and intuitive as possible to not only view data but also generate data.
One challenge the design team faced was with the application’s calendar functionality. At face value, it might seem like a simple page to design. But it needed to be able to communicate data from three separate but related data sets — the user’s testing schedule, test results, and missed tests. The user needed to be able to view all of this data together in a single view. In the end, our designers were able to represent all three data sources in the same view in a seamless way that feels intuitive for users.
We decided to build this next version on Native iOS along with a Rails API. Using native Swift allows us to build rich user interfaces with ensuring a consistent Bluetooth connection in the background. The choice of Ruby on Rails allowed us to move very fast on the back end development, leveraging open source libraries and common development patterns, including:
- Authentication: Gems to have different types of user roles
- Workflows: The Interactor Gem to facilitate rich workflows
- Administrative Interfaces: Active Admin
- Scheduling: The Sidekiq Gem, an existing scheduling library
As we do in all of our projects, we followed an agile development process to allow for incremental development, launching iteratively in releases, providing working software with each release.
The app needed to support three of the company’s personal health devices, and each one communicates in a different way. The client had an existing API and SDK that we leveraged to connect to the devices. With Bluetooth, the data communicated is all in binary, so we had to convert that from 1’s and 0’s to a user-readable format. It was also crucial that the app knew which type of device the user was using so it could accurately interpret various error codes.
In just eight months, Very’s team launched the new app in the Apple App Store. The company was so pleased with the results that soon after, we began the development of an application to complement its line of wearable devices.