Building Watch Apps #WWDC15. Featured. Session 108. Neil Desai watchos Engineer

Similar documents
WatchKit In-Depth, Part 2

Creating Complications with ClockKit Session 209

Designing for Apple Watch

Quick Interaction Techniques for watchos

What s New in watchos

What s New in Xcode App Signing

Designing Great Apple Watch Experiences

Apple Watch Design Tips and Tricks

Accessibility on OS X

What s New in Notifications

Accessibility on ios. Developing for everyone. Frameworks #WWDC14. Session 210 Clare Kasemset ios Accessibility

Adapting to the New UI of OS X Yosemite

What s New in CloudKit

Mastering UIKit on tvos

What s New in tvos #WWDC16. App Frameworks. Session 206. Hans Kim tvos Engineer

Implementing UI Designs in Interface Builder

ios Accessibility Developing for everyone Session 201 Ian Fisch ios Accessibility

What s New in SpriteKit

Creating Audio Apps for watchos

Advanced Scrollviews and Touch Handling Techniques

Monetize and Promote Your App with iad

New UIKit Support for International User Interfaces

Introducing Password AutoFill for Apps

What's New in UIKit Dynamics and Visual Effects Session 229

Building Visually Rich User Experiences

Creating Great App Previews

Mysteries of Auto Layout, Part 1

New Ways to Work with Workouts

Seamless Linking to Your App

Mastering Xcode for iphone OS Development Part 1. Todd Fernandez Sr. Manager, IDEs

Adopting Advanced Features of the New UI

Enhancing your apps for the next dimension of touch

Introduction to WatchKit. CS193W - Spring Lecture 1

Mastering Xcode for iphone OS Development Part 2. Marc Verstaen Sr. Manager, iphone Tools

Introducing On Demand Resources

Advanced Debugging and the Address Sanitizer

Enabling Your App for CarPlay

App Extension Best Practices

imessage Apps and Stickers, Part 2

What s New in Testing

Extending Your Apps with SiriKit

Mastering Drag and Drop

Storyboards and Controllers on OS X

Data Delivery with Drag and Drop

View Controller Advancements for ios8

Profiling in Depth. Do you know where your code is? Session 412. Kris Markel Performance Tools Engineer Chad Woolf Performance Tools Engineer

Creating Content with iad JS

Using and Extending the Xcode Source Editor

Modern User Interaction on ios

Building Apps with Dynamic Type

Improving the Accessibility and Usability of Complex Web Applications

Cross Platform Nearby Networking

What s New in Energy Debugging

Getting the Most Out of HealthKit

Working with Metal Overview

Address Book for iphone

Introducing SiriKit. Hey Siri, say hello to apps #WWDC16. App Frameworks. Session 217

Cocoa Touch Best Practices

Thread Sanitizer and Static Analysis

Introducing Swift Playgrounds

What s New in NSCollectionView Session 225

Introducing the Modern WebKit API

Writing Great Alerts. Design #WWDC17. Natalie Calvert, Designer

Introducing the Contacts Framework

itunes Connect Development to distribution #WWDC15 Distribution Session 304

Improving your Existing Apps with Swift

Advances in TVMLKit. App Frameworks #WWDC17. Trevor Cortez, Localization Engineer Parry Panesar, tvos Engineer Jeremy Foo, tvos Engineer

Using Grouped Notifications

What s New in ARKit 2

Integrating Apps and Content with AR Quick Look

Leveraging Touch Input on ios

Introducing the Photos Frameworks

Media and Gaming Accessibility

Introduction to Siri Shortcuts

Power, Performance, and Diagnostics

ArcGIS Viewer for Flex Advanced Topics

Advances in AVFoundation Playback

What s New in Metal, Part 2

Networking with NSURLSession

Content Protection for HTTP Live Streaming

Editing Media with AV Foundation

Localizing with Xcode 6

CloudKit Tips And Tricks

What s New in XAML Q Release

Introducing MusicKit. Media #WWDC17. Tim Parthemore, MusicKit Services Joel Lopes Da Silva, ios Music

What s New in imessage Apps

Localizing with Xcode 9

Creating Extensions for ios and OS X, Part Two

Advanced Memory Analysis with Instruments. Daniel Delwood Performance Tools Engineer

What s New in HomeKit

Game Center Techniques, Part 1

Billing PracticeMaster Financial. Tabs3 Connect Quick Guide

What s New in tvos 12

Getting Published in Apple News

Your Apps and the Future of macos Security

Core ML in Depth. System Frameworks #WWDC17. Krishna Sridhar, Core ML Zach Nation, Core ML

Writing Energy Efficient Apps

Building for Voice with Siri Shortcuts

Introducing Metal 2. Graphics and Games #WWDC17. Michal Valient, GPU Software Engineer Richard Schreyer, GPU Software Engineer

What s New in Device Configuration, Deployment, and Management

Transcription:

Featured #WWDC15 Building Watch Apps Session 108 Neil Desai watchos Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Agenda

Agenda Architecture

Agenda Architecture Interface elements

Agenda Architecture Interface elements Debugging

Agenda Architecture Interface elements Debugging watchos 2 Features

Architecture

Architecture iphone Apple Watch

Architecture iphone Apple Watch Watch App

Architecture iphone Apple Watch Watch App Watch Extension

Architecture iphone Apple Watch Watch App WatchConnectivity ios App Watch Extension

Architecture Interface UI is stored in Watch app

Architecture Interface UI is stored in Watch app Plan your UI in advance

Architecture Interface UI is stored in Watch app Plan your UI in advance Code updates UI from the extension

Architecture WatchKit Framework One controller per screen of content

Architecture WatchKit Framework One controller per screen of content Manages UI elements through outlets

Architecture WatchKit Framework One controller per screen of content Manages UI elements through outlets Uses target-action design pattern

Adding a Watch App

Adding a Watch App Add Watch App target

Adding a Watch App Add Watch App target Configure interface elements

Adding a Watch App Add Watch App target Configure interface elements Build and run

Simulator

Simulator Overview

Simulator Overview Full simulator

Simulator Overview Full simulator 38mm and 42mm

Simulator Overview Full simulator 38mm and 42mm Simulate Touch Pressure

Simulator Overview Full simulator 38mm and 42mm Simulate Touch Pressure Clock faces

Simulator Overview Full simulator 38mm and 42mm Simulate Touch Pressure Clock faces Multiple apps

Simulator Touch Pressure

Simulator Touch Pressure

Demo

App Lifecycle

Watch Extension Watch App

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() Initialize app

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController awakewithcontext() Initialize UI

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController awakewithcontext() willactivate() Initialize UI Display UI

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController awakewithcontext() willactivate() (various action methods) Initialize UI Display UI Wearer interacts with UI

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController awakewithcontext() willactivate() (various action methods) diddeactivate() Initialize UI Display UI Wearer interacts with UI Wearer stops interacting

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController awakewithcontext() willactivate() (various action methods) diddeactivate() Initialize UI Display UI Wearer interacts with UI Wearer stops interacting WKExtensionDelegate

Watch Extension Watch App WKExtensionDelegate DidFinishLaunching() DidBecomeActive() Initialize app Update modei WKInterfaceController awakewithcontext() willactivate() (various action methods) diddeactivate() Initialize UI Display UI Wearer interacts with UI Wearer stops interacting WKExtensionDelegate WillResignActive() Active app to inactive

WatchKit Layout

WatchKit Layout Model

WatchKit Layout Model Different from UIKit and AppKit

WatchKit Layout Model Different from UIKit and AppKit Flow-based layout

WatchKit Layout Model Different from UIKit and AppKit Flow-based layout UI created in Interface Builder

WatchKit Layout Model Flow-based layout Interface Controller 10:09

WatchKit Layout Model Flow-based layout Interface Controller 10:09

WatchKit Layout Model Flow-based layout Interface Controller 10:09 Image

WatchKit Layout Model Flow-based layout Interface Controller 10:09 Image

WatchKit Layout Model Flow-based layout Interface Controller 10:09 Image Button

WatchKit Layout Model Flow-based layout Interface Controller 10:09 Image Button

WatchKit Layout Model Groups are containers of elements Interface Controller 10:09 Image Button Group

WatchKit Layout Model Groups are containers of elements Interface Controller 10:09 Image Button Group

WatchKit Layout Model Groups are containers of elements 10:09 Image Button Image Label

WatchKit Layout Programming Model

WatchKit Layout Programming Model You don t write object creation code

WatchKit Layout Programming Model You don t write object creation code Fine tuned control of

WatchKit Layout Programming Model You don t write object creation code Fine tuned control of Positioning and Sizing

WatchKit Layout Programming Model You don t write object creation code Fine tuned control of Positioning and Sizing Layout hierarchy

WatchKit Layout Programming Model You don t write object creation code Fine tuned control of Positioning and Sizing Layout hierarchy Animation

WatchKit Layout Programming Model You don t write object creation code Fine tuned control of Positioning and Sizing Layout hierarchy Animation Layout and Animation Techniques for WatchKit Pacific Heights Thursday 10:00AM

Creating My UI

Creating My UI Main App UI Glance Notification

Demo

WatchConnectivity

WatchConnectivity Framework

WatchConnectivity Framework

WatchConnectivity Framework Application Context

WatchConnectivity Framework Application Context Send Message

WatchConnectivity Framework Application Context Send Message File Transfer

WatchConnectivity Framework Application Context Send Message File Transfer Transfer User info

WatchConnectivity Framework Application Context Send Message File Transfer Transfer User info Introducing Watch Connectivity Pacific Heights Thursday 11:00AM

WatchConnectivity Framework

WatchConnectivity Framework Add WatchConnectivity

WatchConnectivity Framework Add WatchConnectivity Debug my app

WatchConnectivity Framework Add WatchConnectivity Debug my app Profile with Instruments

Instruments

Instruments

Instruments Engagement times are short

Instruments Engagement times are short Performance is critical

Instruments Engagement times are short Performance is critical Device

Instruments Engagement times are short Performance is critical Device Simulator

Demo

WWDC CallMeLately

WWDC CallMeLately Added a Watch app

WWDC CallMeLately Added a Watch app Created an interface for our app and glance

WWDC CallMeLately Added a Watch app Created an interface for our app and glance WatchConnectivity

WWDC CallMeLately Added a Watch app Created an interface for our app and glance WatchConnectivity Debugged our ios and watchos apps

WWDC CallMeLately Added a Watch app Created an interface for our app and glance WatchConnectivity Debugged our ios and watchos apps Profiled in Instruments

watchos 2 Features

Complications

Complications

Digital Crown

Digital Crown

Animations

Animations

Heart Rate Sensors

Haptics

Haptics

Media Playback

Media Playback

Media Playback

Audio Recording

Audio Recording

Security

Recap

Recap Architecture

Recap Architecture Adding a Watch app

Recap Architecture Adding a Watch app App Lifecycle

Recap Architecture Adding a Watch app App Lifecycle Use interface elements

Recap Architecture Adding a Watch app App Lifecycle Use interface elements Build and run

Recap Architecture Adding a Watch app App Lifecycle Use interface elements Build and run Debugging

Recap Architecture Adding a Watch app App Lifecycle Use interface elements Build and run Debugging Use watchos capabilities

More Information Documentation watchos 2 Transition Guide WatchKit Programming Guide Technical Support Apple Developer Forums Developer Technical Support Sample Code Lister WatchKit Catalog http://developer.apple.com/watchos General Inquiries Jake Behrens, watchos Frameworks Evangelist behrens@apple.com

Related Sessions Apple Watch Accessibility Pacific Heights Tuesday 1:30PM WatchKit In-Depth, Part 1 Pacific Heights Wednesday 9:00AM WatchKit In-Depth, Part 2 Pacific Heights Wednesday 10:00AM Creating Complications with ClockKit Pacific Heights Wednesday 11:00AM Layout and Animation Techniques for WatchKit Pacific Heights Thursday 10:00AM WatchKit Tips and Tricks Presidio Friday 10:00AM Introducing Watch Connectivity Pacific Heights Thursday 11:00AM Designing for Apple Watch Presidio Wednesday 4:30PM Apple Watch Design Tips and Tricks Presidio Friday 3:30PM

Labs ClockKit Complications Lab Frameworks Lab D Wednesday 1:30PM WatchKit Lab Frameworks Lab D Wednesday 3:30PM Watch Connectivity Lab Frameworks Lab B Thursday 1:30PM WatchKit Layout and Animation Lab Frameworks Lab A Thursday 3:30PM WatchKit and ClockKit Complications Lab Frameworks Lab A Friday 1:30PM