Supporting more exercise equipment

Nov 27, 2020

In the previous blog post I went into technical details about bug fixing and user experience enhancements. One pink elephant in the room is iOS device support. Flutter gives me the power to spin out an iOS version, however this would require a MacBook Pro or at least a iMac. None of which I own and even a decent iMac is an expenditure, not cheap.

It’d be so great to port all functionality into a Progressive Web Application (PWA). PWA would allow off-line capabilities (so you could start it and record a workout even if you don’t have a data connection), it could act as a mobile app but I wouldn’t have to go through the hoops of App Store releases. The PWA could record the workouts into IndexedDB until they are uploaded or exported. However somehow the browser would have to break out of its sandbox and connect to the exercise equipment through Bluetooth Low Energy (BLE) protocol.

This is not far fetched idea with evergreen Chrome browser: Web Bluetooth support is required and it was already possible four years ago when I was presenting for GDG Fresno how to control the color of a smart LED candle from a web application. Web Bluetooth is about Bluetooth Low Energy (BLE) specifically but fortunately the exercise machines also happen to use this type of Bluetooth protocol. It’s important to note that BLE is not compatible with ANT+ or other Bluetooth protocols.

If we look at browser support of Web Bluetooth today then we can see that Chrome, Edge, and Opera are on board. Firefox, Safari, and most notably iOS Safari lack support though. Desktop Safari can be worked around by installing Chrome on MacOS, however iOS is tricky: it’s such a walled garden system, that all iOS browsers are basically just re-skinned versions of iOS Safari. Even if you install iOS Chrome it is in fact an iOS Safari inside.

Lately I came across interesting news: both Nvidia GeForce Now and Google Stadia will be available in a web application form on iOS. The most interesting part is that supposedly there’ll be a way to pair the game controllers through bluetooth. Say what? I thought that’s impossible. Well, it turns out that there can be a way: both Bluefy and WebBLE provide implementations of the Web Bluetooth API on top of WKWebView. I need to perform some tests if this can really work, but that could be a feasible way to cover iOS platform. In fact I know users who’d prefer their iPhones. The downside is that I’d need to port everything to TypeScript / PWA land, possibly this would be an Angular Web Component app, this would be a lot of work - therefore I have no timeline yet (but it’s a ticketed issue).

Lastly I want to expand the exercise equipment support of my app. I’m glad to see that more and more indoor bikes featuring smart consoles with Bluetooth connection are in affordable price range. I also noticed that these bikes are always selling some kind of a monthly subscription to some workout portal. Customers see that although they get a year or two of free subscription to these portals, one day that free period will expire. Even today some users complain that they do not want to participate in any class, they just simply want to record their workout and upload it to their preferred systems (Strava, Under Armour MapMyFitness, etc.). This is where Track My Indoor Workout) has a potential. I’m looking at bikes to get hold of so I can develop support for them:

I’d be curious to receive other candidate equipment to support. It can be even a treadmill or an elliptical machine if it has speed or distance data.

Comments loading...