Bus Stop DC watchOS App Improvements
Last month we updated our Bus Stop DC iOS app and have just released a new version of its companion watchOS app. You can read more about the new features of the Bus Stop DC iOS app here and download it here. You can find other posts about this project by searching our Labs blog for the tag #busstopwatch.
Improvements
This new version of the watchOS app is a complete rewrite. The first version was done in Objective-C and we wanted to move it to Swift and migrate to watchOS 2.2. The change to the latest watchOS meant that we needed to redo how the app communicates with the phone app. Previously all communications with the phone were through [openParentApplication], but is now done through [sendMessage] and the new [WCSession] in watchOS 2.2. This makes the initial coordination between the phone and watch easier. [WCSession] also provides the ability to recieve [didReceiveApplicationContext] notifications which enabled us to have both the phone and watch sync their active state via the ApplicationContext. This works fairly well, but the data sync does not function when the watch app is inactive.
The major and probably more exciting upgrade we made to Bus Stop DC watch app is the “you are near your final stop” notification. This feature allows the watch to notify the user via haptic feedback that their destination is approaching. Our goal in doing this was to allow riders to read, sleep, or relax and not worry about missing their stop.
Challenges
We encountered a number of challenges while developing the app. The main challenge was that developing on a simulator did not give one a feel for how the app runs on the actual watch hardware. The following are the problems with the simulator we encountered:
- Notifications not provided when in the simulator
- The map does not display properly in the simulator
- The speed of the app and response to controls is different
- Interactions with the app in the simulator are physically different than in reality
To overcome this challenge we did extensive testing with the app on the actual hardware and the environment in which it would be used. This resulted in multiple iterations on the interactions and functionality provided by the watch app. A good example of this iterative change was the reduction of the available distance measures for alerting. Testing in the real world indicated that when you got close enough for the shortest distance to trigger an alert it was likely too late to signal that you wanted to get off at the approaching stop.
The other major challenge we faced was that keeping a watch app and phone app continuously in sync is not well supported in watchOS 2.2. If the watch app is booted from memory the sync will stop updating and the data will become stale in the watch. While this doesn’t stop the notification from the iPhone app from alerting the user of the upcoming stop it will, however, keep the watch app from triggering an alert. Ultimately this isn’t a challenge we could overcome but we made a number of iterations on the technique we used to produce the alert to attempt to provide the best overall solution given the state of the watch app at any given time.
Lastly, the app’s glance view, which shows the next bus arrival time for the bus nearest you, provides a less than ideal user experience. The glance view requires a check of the current user location and also makes a number of API calls to fetch data. In the end, this wasn’t something we could really address but we will hopefully be able to provide a better experience in the future.
Next Steps
After attending WWDC 2016 we realized we weren’t the only ones experiencing the challenges stated above. We believe a lot of the challenges we faced in watchOS 2.2 that we couldn’t find a great solution for are going to be solvable in watchOS 3. The ability to update the watch app in the background has been enhanced in watchOS 3 and that should cover the syncing hurdles we ran into. In addition to that, the glance view has been replaced with a dock view that can be updated while the app is in the background. As we rework the app for watchOS 3 we will also be evaluating a number of other new features.
Have a web app, mobile app, or piece of custom software you need designed and developed? Drop us a line