
Join the course with a warm welcome from the instructor, who thanks you for signing up and outlines a kickoff lecture before you start building Apple Watch apps.
Meet the instructor, explore the three watchOS app projects, and start with the Time Tracker, using GitHub code to fuel experimentation and questions.
Begin building Apple Watch apps by designing the time tracker, clocking work hours on your wrist, and exploring Xcode flow, storyboards, and tables.
Plan before building by sketching the app layout, then design a time tracker watch app with clock in/out and a history table, plus a quick Xcode tour.
Design a watchOS storyboard that shows today’s hours in a centered label, toggles clock in/out with a button, and uses alignment, font sizing, and spacing controls.
Connect outlets and actions in the interface controller, wire a clock in and clock out button to update the top time label and middle counter, and toggle its title.
Finish the watchOS UI by implementing a clocked in/out toggle with a boolean, updating the UI, button title, visibility, and color (green for in, red for out) to reflect state.
Store clocked in and clocked out times with user defaults by saving date objects under a clocked in key and synchronizing, then retrieve to track work sessions.
Save clock in times and clock out times to user defaults as clock ins and clock outs arrays, and display these periods in a list.
Implement a clock-in timer that updates every second, calculating elapsed time into hours, minutes, and seconds, and store clock-in/out data in arrays for the history interface controller.
Learn to implement a day-wide timer on watchOS by calculating total seconds from clock in and clock out arrays, update daily totals, and refresh UI labels.
Polish the watch app by implementing a total time worked function, showing today’s elapsed time in hours and minutes, removing unnecessary seconds, and refactoring for DRY, clocked in/out states.
Finish first section of the Time Tracker app by mastering watchOS basics, starting a new Xcode project, exploring the simulator, storyboards, outlets, actions, and interface controllers and view controllers.
Improve the time tracker watchOS app by enabling reset and viewing clock in/out history, while exploring watchOS table interfaces, segues between interfaces, and force touch menus.
Implement a hard press menu on watchOS to access history and reset all data, using storyboard to add menu items on an interface controller and test in the simulator.
Clear all stored work time data by setting clocked in time, clock ins, and clock outs to nil in user defaults, then update the UI to show reset values.
Explore handling history button taps to push to a timetable interface controller with a full-screen table, using storyboard segues and awake(withContext) for passing data.
Explore how to implement and populate a table in watchOS by configuring number of rows, defining a table row controller, and looping to set each row's label text.
Load clock ins and clock outs from user defaults into two date arrays, populate the table with counts, and display the time worked as a formatted hours minutes seconds string.
Select a row to push the detail interface controller and pass clock in and clock out dates as context to display them in clock in and clock out labels.
Format clock in and clock out dates with a date formatter to produce readable strings, using a date format string and the NSDateFormatter approach.
Polish improves reliability by persisting clocked in state with user defaults when the interface controller will activate, updating UI accordingly, and robust timer handling to prevent lost sessions.
Learn to design watchOS apps that minimize user effort by prioritizing quick, intuitive interactions and simple UIs, using tables, deep press, and context passing between interface controllers.
Explore watch face complications and how third-party apps like Bit Price display Bitcoin price on the Apple Watch, while coordinating with background tasks and an app interface.
Explore building a watchOS app that fetches bitcoin prices, displays the current price, and updates a watch face complication for quick, real-time glances with Swift and WatchKit.
Design a single watch app screen with a bitcoin logo image and two labels, styling the price boldly and updating status, using storyboard, assets, and constraints.
Learn to fetch the bitcoin price using the Coindesk API with a Swift URL session, parse JSON data, and integrate it into the app workflow.
Decode a Json object with do-try-catch and guard to safely traverse a Bitcoin price Json, drilling into BPI, USD, and rate float, then update the watch ui with the price.
Polish the bitcoin price display by formatting currency with a US locale, showing updating and updated states, and saving the latest price in user defaults to support a watch complication.
Learn how complications integrate with watchOS via the complication controller, configure modular small and large faces, and manage timeline and privacy behaviors for a Bitcoin price app.
Build a modular small watchOS complication using the stack text template, configure line one and line two with CLK text providers, and test the result in the simulator.
Implement a live bitcoin price update in an Apple Watch complication by using get current timeline entry, building a clock complication timeline entry, wiring API data, and displaying the price.
Explore how to implement modular small and modular large complications, using a complications controller to provide templates for both, including a standard body and Bitcoin price display with number formatting.
Learn to keep bitcoin price data current on watchOS 3 by refreshing complications through the clock complication server, iterating over multiple complications and updating timelines.
finish your watchOS 3 app by learning about complications, a feature that adds polish and saves time for Apple Watch development. more apps are coming soon.
Explore the final watchOS distraction journal app, using pickers, hourly prompts, local notifications, watch connectivity, and core data to log distractions from iOS to the watch.
Log distractions on the Apple Watch and set hourly reminders to stay on task. The iPhone app aggregates all logged distractions for review to identify patterns and reduce distractions.
Assemble the Apple Watch UI with a main screen, two buttons, and a label, then implement interface controllers, a picker, and a static notification, mirroring a full-screen iOS table view.
Learn to implement a watchOS distractions table with a distractions interface controller and row, populate it with a list, log selections with timestamps, and pass them to the iOS app.
Establish watch connectivity using the watch connectivity framework to pass data from the Apple Watch to the iOS app via WCSession and its delegate.
Explore WC session communication: implement transfer user info from watch to iOS, compare update application context and messaging, and handle session did receive user info to log distractions.
Pass data from the Apple Watch app to the iOS app and save it in Core Data as a distraction record with a name and a date.
Fetch distractions from core data with a fetch request, obtain the context from the app delegate's persistent container, and populate a table view in the iOS app.
Post a notification center notification when new data arrives from the watch, listen in the view controller, and refresh the core data table view on the main thread.
Sort core data fetch results by date to show the most recent distractions at the top, and format timestamps for each row to display date and time clearly.
Populate the watch picker with 1–24 hours by looping to create WKPickerItem objects, each with titles like 'one hour' or 'two hours', then connect the outlet and action.
Learn to schedule user notifications on watchOS using UNUserNotificationCenter, building a UNNotificationRequest with unique identifiers, content, and a time interval trigger. Remember to request user permission to deliver notifications.
Learn to request user permission for Apple Watch notifications by implementing UNUserNotificationCenter authorization, setting the extension delegate, and calling the permission check when the reminder interface appears.
Implement notification categories with yes and no actions for Apple Watch notifications, using UNNotificationCategory and UNNotificationAction, assign the category to content, and handle taps with did receive response.
Handle watchOS notification actions by checking the response identifier; on no action, bring the app to foreground and navigate to the distractions screen to log it.
Learn to schedule hourly notifications on watchOS by using a for loop to convert hours to seconds, and delete all pending notifications with the user notification center.
Celebrate yourself on completing the distraction journal and all course apps, and master notifications—scheduling, permission, and handling—plus watch connectivity to iPhone and core data for Apple Watch apps.
Thank you for checking out my course :) "Apple Watch Programming for iOS Developers" will help you enter the exciting world of WatchKit. This course assumes you have some iOS programming experience and dives right into the specific tools you need to make WatchOS 3 apps.
Topics we cover include:
In this course, we'll be creating complete apps that you can install on your very own watch or upload to the App Store. For each app we make you will receive completed source code so that you can always check your work against mine as a reference.
What makes Nick the right instructor?
I would love to have you in the course. Take a look at the promo video and see you inside!
Additionally, I have made this course downloadable, so you can work through the class offline, making it as convenient as possible for you! Most instructors won't allow this, but I want you to be able to enjoy this course in whichever way is best for you :)