Wei-Meng Lee weimenglee@learn2develop.net Developer Learning - - PowerPoint PPT Presentation

wei meng lee weimenglee learn2develop net developer
SMART_READER_LITE
LIVE PREVIEW

Wei-Meng Lee weimenglee@learn2develop.net Developer Learning - - PowerPoint PPT Presentation

Wei-Meng Lee weimenglee@learn2develop.net Developer Learning Solutions, http://www.learn2develop.net Agenda Getting started with Apple Watch development Cool stuff in watchOS 2.0 Complications Watch Connectivity Framework


slide-1
SLIDE 1
slide-2
SLIDE 2
slide-3
SLIDE 3

Wei-Meng Lee weimenglee@learn2develop.net Developer Learning Solutions, http://www.learn2develop.net

slide-4
SLIDE 4

Agenda

  • Getting started with Apple Watch development
  • Cool stuff in watchOS 2.0
  • Complications
  • Watch Connectivity Framework
  • Download all demos from:
  • http://goo.gl/DtTOCc
slide-5
SLIDE 5

Smart Watches

slide-6
SLIDE 6

Who will be the winner?

Whoever controls the smartphone platforms, controls the smartwatch platform

slide-7
SLIDE 7

And the winner(s) are…

slide-8
SLIDE 8

Tools

  • Xcode 7
  • Familiarity with iOS development
  • Swift (Objective-C is also supported)
slide-9
SLIDE 9

Apple Watch Specifications

  • Powered using a custom chip (S1) from

Apple

  • Sensors
  • Heart rate sensor on back of watch
  • Accelerometer, WiFi, and Bluetooth LE
  • Charged wirelessly using a magnetic

charger

slide-10
SLIDE 10

Interacting with the Apple Watch

  • Digital Crown - scroll through list of items, zooms

in or out of images, etc. Also act as a Home button

  • Force Touch - pressure sensitive screen;

differentiates between tap and press; a press is like a right-click on a computer

  • Taptic Engine - haptic feedback system; taps on

your wrist to inform of notifications; vibrates when you rotate the digital crown

slide-11
SLIDE 11

Apple Watch Sizes

  • 38mm (height)
  • 42mm (height)

312 390 272 340

Good news! No AutoLayout! Yet

slide-12
SLIDE 12

WatchKit App Architecture

WatchKit Extension

WatchKit App

Containing iOS app

slide-13
SLIDE 13

iOS App and Watch App

slide-14
SLIDE 14

Deploying Apple Watch Apps

iOS App Bundle

slide-15
SLIDE 15

Types of Apple Watch Apps

  • Watch Apps
  • native apps that run on the Apple Watch and interacts with the application logic

running on the iPhone

  • Complications
  • apps that supplies data to be displayed on the watch faces
  • Notifications
  • displays notifications received by the iPhone (either local or remote

notifications); apps can customise the notification interface

  • Glances
  • a supplemental way for the user to view important information from your app.

Glances does not support interactions with users – tapping on a glance will launch the Watch app

slide-16
SLIDE 16

Hello, Apple Watch!

slide-17
SLIDE 17

Complications

slide-18
SLIDE 18

What are Complications?

  • A complication is a function on a timepiece that

does more than just tell the time

slide-19
SLIDE 19

Quick Look at the Various Watch Faces

slide-20
SLIDE 20

Complications Not Supported

  • n the Following Watch Faces
  • Motion
  • X-Large
  • Timelapse
  • Astronomy
  • Photo Album
  • Photo
  • Solar
slide-21
SLIDE 21

Time Travel

  • Time Travel is a new feature in watchOS 2.0 that

allows your application to display time-sensitive information on watch faces with complications. Turning the Digital Crown back and forth displays events past and future

  • Lets you turn back time (or forward) to display

information related to that specific time

  • Examples:
  • Weather forecast for the next 2 days
  • Stock prices
  • Too bad you can’t display stock prices for the

future!

slide-22
SLIDE 22

Watch Faces Not Compatible with Time Travel

  • Motion
  • X-Large
  • Timelapse
  • Photo Album
  • Photo
  • Astronomy
  • Solar

Special Watch Faces that supports their own Time Travel

slide-23
SLIDE 23

Supporting Complications in your Apple Watch App

  • Use the ClockKit Framework
  • Implement the CLKComplicationDataSource

protocol

slide-24
SLIDE 24

Implementing the CLKComplicationDataSource Protocol

  • getSupportedTimeTravelDirectionsForComplication:withHandler:
  • Time travel directions
  • getTimelineStartDateForComplication:withHandler:
  • Earliest date for complication data
  • getTimelineEndDateForComplication:withHandler:
  • Latest date for complication data
  • getPrivacyBehaviorForComplication:withHandler:
  • Privacy behavior - show or hide data when watch is locked
  • getCurrentTimelineEntryForComplication:withHandler:
  • Current data to display
  • getTimelineEntriesForComplication:beforeDate:limit:withHandler:
  • Data to display for past timeline
  • getTimelineEntriesForComplication:afterDate:limit:withHandler:
  • Data to display for future timeline
  • getNextRequestedUpdateDateWithHandler:
  • Next update time for timeline data
  • getPlaceholderTemplateForComplication:withHandler:
  • Static display for complication
slide-25
SLIDE 25

Placement for Complications

!

slide-26
SLIDE 26

Complication Templates

CLKComplicationTemplateModularSmallColumnsText CLKComplicationTemplateModularSmallRingImage CLKComplicationTemplateModularSmallRingText CLKComplicationTemplateModularSmallSimpleImage CLKComplicationTemplateModularSmallSimpleText CLKComplicationTemplateModularSmallStackImage CLKComplicationTemplateModularSmallStackText CLKComplicationTemplateModularLargeColumns CLKComplicationTemplateModularLargeStandardBody CLKComplicationTemplateModularLargeTable CLKComplicationTemplateModularLargeTallBody CLKComplicationTemplateCircularSmallRingImage CLKComplicationTemplateCircularSmallRingText CLKComplicationTemplateCircularSmallSimpleImage CLKComplicationTemplateCircularSmallSimpleText CLKComplicationTemplateCircularSmallStackImage CLKComplicationTemplateCircularSmallStackText CLKComplicationTemplateUtilitarianSmallFlat CLKComplicationTemplateUtilitarianSmallRingImage CLKComplicationTemplateUtilitarianSmallRingText CLKComplicationTemplateUtilitarianSmallSquare CLKComplicationTemplateUtilitarianLargeFlat

slide-27
SLIDE 27

Complication Templates

!

CLKComplicationTemplateModularSmallColumnsText

slide-28
SLIDE 28

Complication Templates

CLKComplicationTemplateModularSmallRingImage

!

slide-29
SLIDE 29

Complications Demo

slide-30
SLIDE 30

Movie Data

!

let movies = [ Movie(movieName: "Terminator 2: Judgment Day", runningTime: 137 * MINUTE, runningDate: NSDate(timeIntervalSinceNow: -360 * MINUTE), rating:8), Movie(movieName: "World War Z", runningTime: 116 * MINUTE, runningDate: NSDate(timeIntervalSinceNow: -120 * MINUTE), rating:7), Movie(movieName: "Secondhand Lions", runningTime: 90 * MINUTE, runningDate: NSDate(timeIntervalSinceNow: 10 * MINUTE), rating:8), Movie(movieName: "The Dark Knight", runningTime: 152 * MINUTE, runningDate: NSDate(timeIntervalSinceNow: 120 * MINUTE), rating:9), Movie(movieName: "The Prestige", runningTime: 130 * MINUTE, runningDate: NSDate(timeIntervalSinceNow: 360 * MINUTE), rating:8), ]

slide-31
SLIDE 31

Communicating between the iOS App and the Watch App

slide-32
SLIDE 32

iOS and Watch Apps are on Separate Islands

slide-33
SLIDE 33

Watch Connectivity Framework

  • Background Transfers
  • Application Context
  • User Info
  • File Transfer
  • Interactive Messaging
  • Send Message
slide-34
SLIDE 34

Apple Watch

Storyboard Resources WatchKit App Code Resources WatchKit Extension

WatchKit WatchKit

iPhone

Watch Connectivity Framework

iOS App

Background Transfers

Application Context

a b c c

slide-35
SLIDE 35

Use Case

  • Useful for updating application states, such as

glances on the Apple Watch

slide-36
SLIDE 36

Apple Watch

Storyboard Resources WatchKit App Code Resources WatchKit Extension

WatchKit WatchKit

iPhone

Watch Connectivity Framework

iOS App

Background Transfers

User Info

a b c c b a

slide-37
SLIDE 37

Use Case

  • Useful for games where changes on one device

must be synchronized on the other device

slide-38
SLIDE 38

Apple Watch

Storyboard Resources WatchKit App Code Resources WatchKit Extension

WatchKit WatchKit

iPhone

Watch Connectivity Framework

iOS App

Background Transfers

File Transfer

a b b a

~/Documents/Inbox

slide-39
SLIDE 39

Use Case

  • Useful for transferring files between devices
slide-40
SLIDE 40

Apple Watch

Storyboard Resources WatchKit App Code Resources WatchKit Extension

WatchKit WatchKit

iPhone

Watch Connectivity Framework

iOS App

Interactive Communications

Send Message

a b b a

  • When Apple Watch

sends a message to the iPhone, it wakes up the containing iPhone app in the background (if it is not in the foreground)

  • When the iPhone

sends a message to the watch, the watch app must be in the foreground, else it fails

slide-41
SLIDE 41

Use Case

  • Useful for cases where you need to control your

iPhone through the Apple Watch. For example, you can create an app on the Apple Watch to adjust the volume on the iPhone, or perform some home automation tasks.

slide-42
SLIDE 42

Demos

slide-43
SLIDE 43

Volume Controller

slide-44
SLIDE 44

Killer Watch Apps

  • Don’t cram your existing apps onto the watch!
  • Think of the watch as an extension of your phone
  • Use it to enhance the experience of the mobile app
  • Home automation
  • “Hey Siri”
  • “Launch Garage app”
  • Tap the “Unlock Garage Door”
slide-45
SLIDE 45