Unlock This Episode
Our Free plan includes 1 subscriber-only episode of your choice, plus weekly updates from our newsletter.
We have now built all the behavior for the timer, and it turned out to be pretty complex! We had to create new ways for the child to communicate back to the parent, and we had to implement behavior to pause the timer whenever an alert is shown, and it was pretty cool to see how we were able to accomplish these features.
OK, we are finally ready to attack the speech recognition functionality.
We are going to do the absolute bare minimum of work to implement this behavior by cramming Speech framework code directly into our model. Longtime viewers of Point-Free will see the problems with this right away, but we want to show this approach as it is how Apple’s Scrumdinger was built, and it will make it easier to see the drawbacks.
Display an alert if the speech recognizer throws an error.
Display an alert before starting a meeting if they have previously denied speech authorization. Ask if they would like to proceed, or if they’d like to go to Settings to authorize.
Update the previous logic so that the alert is only displayed the first time, or add a button that says “Stop reminding me”.
Display an alert if JSON decoding fails when the model is initialized.
Use a dedicated queue to load and persist standup data.
Learn the essentials of iOS app development by building a fully functional app using SwiftUI.
A rebuild of Apple’s “Scrumdinger” application that demosntrates how to build a complex, real world application that deals with many forms of navigation (e.g., sheets, drill-downs, alerts), many side effects (timers, speech recognizer, data persistence), and do so in a way that is testable and modular.