mobiletech conference 2015: apple watch apps
TRANSCRIPT
Mit WatchKit Apps für die Apple Watch entwicklen
@claushoefele
Kleinanzeigen TransitHopper
Next meeting
Follow Back
ToDo with Siri/Things
“[…] the watch is a useful luxury […]”
–Benedict Evans
Agenda
• Interaction Models • Transitioning to watchOS 2 • Implementation Overview
Usability
UtilityUtility/Usability Model
Interactive Notifications
Notifications
Apps
Glances Complications
Usability
Utility
Siri Background
Apps
Interactive Glances
Interaction Models
Priorities
Interactive Notifications Complications Glances
1. 2. 3.
Apps are landing pages for extensions
OS 2WatchKit Extension
WatchKitExtension
iOS App
OS 1
Watch App
watchOS 1
Hides When Loading
Initially display Storyboard values
watchOS 1(Hides When Loading disabled)
watchOS 2
Storyboards
class TripDetailInterfaceController: WKInterfaceController { @IBOutlet private weak var map: WKInterfaceMap! override func awakeWithContext(context: AnyObject?) { super.awakeWithContext(context)
... } override func willActivate() { super.willActivate()
... } }
map.addAnnotation(coordinate, withPinColor: .Red) let coordinateRegion =
MKCoordinateRegionMakeWithDistance[...] map.setRegion(coordinateRegion)
watchOS 2
• Extensions running on the watch • Animations • More access to hardware • Complications (ClockKit) • Watch can connect to WiFi directly • Watch Connectivity framework
watchOS 2
Upgrade
watchOS 1
watchOS 2
Targets
Earlier 2%iOS 7
13%
iOS 8 86%
iOS Distribution
OS 1Parent App
WatchKitExtension
iOS App
Watch App
openParentApplication()
Darwin Notifications
App Group Container
Parent App
WatchKitExtension
iOS AppWatch App
OS 2
Watch ConnectivityFramework
Watch Connectivity
• Background mode • Application context • User Info Transfer • File Transfer
• Interactive messaging • Dictionary • Data
OS 1Networking
WatchKitExtension
iOS App
Watch App
Networking
Watch App
OS 2
Networking
• Full support HTTP/S (2) & ATS • Apps will only run for a very short time
• Keep it quick • Background uploads/downloads • Watch Connectivity
• No NSURLConnection
Notifications
Short look Long look Static
Dynamic
Default
Customized
Notification Appearances
Category
Category
Interactive Notifications
Foreground/background
Implementing Actions
Identifier
Foreground Actions
Complications OS 2
Complication Families
Modular Large
Circular Small Utilitarian Small
Utilitarian Large
Modular Small
Time Travel
Lunch12:00PM
Meeting1:00PM
Gym2:00PM
12:45PM
TimelineEntry
TimelineEntry
13:45PM
TimelineEntry
• Small space • Data delivery • PushKit • Timed update
• Budgeted execution time
Implementing Complications
Glances
Glance Templates
Glance Templates
• Non-interactive • UI based on templates • Use Handoff to pass data to app • Consider using performExpiringActivityWithReason:usingBlock:
Implementing Glances
@claushoefele