344
© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Introducing Watch Connectivity Communication between devices Chris Jensen watchOS Engineer Alex Ledwith watchOS Engineer System Frameworks Session 713 #WWDC15

Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Introducing Watch Connectivity Communication between devices

Chris Jensen watchOS EngineerAlex Ledwith watchOS Engineer

System Frameworks

Session 713

#WWDC15

Page 2: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit App

iOS App

WatchKit Extension

watchOS 1

Data Store

Page 3: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

iOS AppWatchKit

App

WatchKit Extension

watchOS 2

Data Store

Data Store

Page 4: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

iOS AppWatchKit

App

WatchKit Extension

watchOS 2

Data Store

Data Store

Page 5: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

?How do you get the data to the Apple Watch

Page 6: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession
Page 7: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession
Page 8: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchConnectivity

Page 9: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchConnectivity NSURLSession

Page 10: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Example Apps with watchOS 2 Support

News App

Social Networking

App

iOS Game

Image Editing App

Run Tracker App

Weather App

Surfing App

Sports App

Page 11: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession
Page 12: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchConnectivity

NSURLSession

Complications

Page 13: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchConnectivity

Page 14: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

Page 15: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

Always set your apps up to receive incoming WatchConnectivity content

Page 16: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

Always set your apps up to receive incoming WatchConnectivity contentif (WCSession.isSupported()) {

Page 17: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

Always set your apps up to receive incoming WatchConnectivity contentif (WCSession.isSupported()) { let session = WCSession.defaultSession()

Page 18: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

Always set your apps up to receive incoming WatchConnectivity contentif (WCSession.isSupported()) { let session = WCSession.defaultSession() session.delegate = self // conforms to WCSessionDelegate

Page 19: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

Always set your apps up to receive incoming WatchConnectivity contentif (WCSession.isSupported()) { let session = WCSession.defaultSession() session.delegate = self // conforms to WCSessionDelegate session.activateSession() }

Page 20: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

Page 21: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

Page 22: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

Page 23: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

let session = WCSession.defaultSession() session.delegate = self session.activateSession()

Page 24: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

session.paired == false

Page 25: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

session.paired == false

Page 26: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.paired == false

Page 27: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

N

session.paired == false

Page 28: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.paired == false

Page 29: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.paired == false

Page 30: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.paired == false

Page 31: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.paired == false

Page 32: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

session.paired == false

Page 33: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

session.paired == false

func sessionWatchStateDidChange(_)

Page 34: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Session State

session.paired == true

func sessionWatchStateDidChange(_)

Page 35: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == falseNews App

Page 36: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == false

Page 37: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == false

Page 38: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == false

Page 39: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == false

Page 40: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == false

Page 41: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == false

Page 42: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == falseNews App

Page 43: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == trueNews App

Page 44: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.watchAppInstalled == true

session.watchDirectoryURL != nilNews App

Page 45: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session StateWatch directory

Page 46: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session StateWatch directory

Directory and its contents’ lifetime is tied to the watchAppInstalled property

Page 47: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session StateWatch directory

Directory and its contents’ lifetime is tied to the watchAppInstalled propertyUse only for data relevant to the specific instance of your Watch app

Page 48: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session StateWatch directory

Directory and its contents’ lifetime is tied to the watchAppInstalled propertyUse only for data relevant to the specific instance of your Watch app• ‘Last queued item’ marker

Page 49: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session StateWatch directory

Directory and its contents’ lifetime is tied to the watchAppInstalled propertyUse only for data relevant to the specific instance of your Watch app• ‘Last queued item’ marker• Preferences

Page 50: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session StateWatch directory

Directory and its contents’ lifetime is tied to the watchAppInstalled propertyUse only for data relevant to the specific instance of your Watch app• ‘Last queued item’ marker• Preferences• Files queued for transfer

Page 51: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.complicationEnabled == falseNews App

Page 52: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

session.complicationEnabled == falseNews App

Page 53: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Session State

News Appsession.complicationEnabled == true

Page 54: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Communication

Alex Ledwith

Page 55: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

CommunicationCategories

Page 56: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

CommunicationCategories

Background transfers

Page 57: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

CommunicationCategories

Background transfers• Content not needed immediately

Page 58: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

CommunicationCategories

Background transfers• Content not needed immediately• OS intelligently transfers content

Page 59: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

CommunicationCategories

Background transfers• Content not needed immediately• OS intelligently transfers content

Interactive messaging

Page 60: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

CommunicationCategories

Background transfers• Content not needed immediately• OS intelligently transfers content

Interactive messaging• Live communication

Page 61: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background Transfers

Page 62: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersContent and user interaction

Page 63: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Background Transfers

CBA

Content and user interaction

Page 64: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

Background Transfers

CBAD

Content and user interaction

Page 65: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

DC

DC

Background Transfers

BA

Content and user interaction

Page 66: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

D C

DC

Background Transfers

BA

Content and user interaction

Page 67: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

D C

DC

Background Transfers

BA

Content and user interaction

Page 68: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit App

News App

DCDC

Background Transfers

BA

Content and user interaction

Page 69: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Page 70: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up content

Page 71: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up contentOS transfers content

Page 72: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up contentOS transfers content• Sending side can exit

Page 73: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up contentOS transfers content• Sending side can exit• Pick opportune time

Page 74: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up contentOS transfers content• Sending side can exit• Pick opportune time• Delivers on receiver next launch

Page 75: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up contentOS transfers content• Sending side can exit• Pick opportune time• Delivers on receiver next launch

Recommended

Page 76: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersIntroduction

Queue up contentOS transfers content• Sending side can exit• Pick opportune time• Delivers on receiver next launch

Recommended• Most information not needed immediately

Page 77: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersTypes

Page 78: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersTypes

Application context

Page 79: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersTypes

Application contextUser info transfer

Page 80: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersTypes

Application contextUser info transferFile transfer

Page 81: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Social Networking

App

Page 82: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background Transfers

receivedApplicationContext

Application context

applicationContext

Social Networking

App

Page 83: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

Page 84: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

A

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

Page 85: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

A

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

Page 86: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

A

B

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

Page 87: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

B

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

Page 88: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

B

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

Page 89: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background Transfers

receivedApplicationContext

Application context

applicationContext

updateApplicationContext(_:)

Social Networking

App

WatchKit Extension

Page 90: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context: Code

Page 91: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

do {let context = // Create context dictionary with latest state

Background TransfersApplication context: Code

Page 92: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

do {let context = // Create context dictionary with latest statetry WCSession.defaultSession().updateApplicationContext(context)

Background TransfersApplication context: Code

Page 93: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

do {let context = // Create context dictionary with latest statetry WCSession.defaultSession().updateApplicationContext(context)

} catch {// Handle any errors

}

Background TransfersApplication context: Code

Page 94: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveApplicationContext: applicationContext: [String : AnyObject]) {

// Handle application context dictionary }

Background TransfersApplication context: Code

Page 95: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Page 96: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant content

Page 97: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant contentOverriding behavior

Page 98: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant contentOverriding behaviorDictionary

Page 99: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant contentOverriding behaviorDictionary• Property list types

Page 100: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant contentOverriding behaviorDictionary• Property list types

Recommended use cases

Page 101: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant contentOverriding behaviorDictionary• Property list types

Recommended use cases• Many Apple Watch apps

Page 102: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersApplication context

Most interesting/relevant contentOverriding behaviorDictionary• Property list types

Recommended use cases• Many Apple Watch apps• Glances

Page 103: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Game

Page 104: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

Game

Page 105: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

L2L1

Game

Page 106: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

L2L1

transferUserInfo(_:)

Game

Page 107: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

L2L1

transferUserInfo(_:)

L3

Game

Page 108: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

L2L1

transferUserInfo(_:)

L3

Game

Page 109: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

L2L1

transferUserInfo(_:)

L3

Game

Page 110: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Outstanding User Info Transfers

L2L1

transferUserInfo(_:)

L3iOS Game Game

Page 111: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer: Code

Page 112: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let userInfo = // Create dictionary of userInfo

Background TransfersUser info transfer: Code

Page 113: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let userInfo = // Create dictionary of userInfolet userInfoTransfer = WCSession.defaultSession().transferUserInfo(userInfo)

Background TransfersUser info transfer: Code

Page 114: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let userInfo = // Create dictionary of userInfolet userInfoTransfer = WCSession.defaultSession().transferUserInfo(userInfo)

Background TransfersUser info transfer: Code

let transfers = WCSession.defaultSession().outstandingUserInfoTransfers()

Page 115: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {

// Handle incoming user info dictionary }

Background TransfersUser info transfer: Code

Page 116: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Page 117: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Queue user infos (dictionaries)

Page 118: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Queue user infos (dictionaries)• Property list types

Page 119: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Queue user infos (dictionaries)• Property list types

In memory content

Page 120: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersUser info transfer

Queue user infos (dictionaries)• Property list types

In memory contentAccess to outstanding content in queue

Page 121: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Image Editing App

Page 122: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers ~/Documents/Inbox/

Image Editing App

Page 123: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers

P1P2

~/Documents/Inbox/

Image Editing App

Page 124: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers

P1P2

transferFile(_: metadata:)

~/Documents/Inbox/

Image Editing App

Page 125: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers

P1P2

P3

transferFile(_: metadata:)

~/Documents/Inbox/

Image Editing App

Page 126: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers

P1P2P3

transferFile(_: metadata:)

~/Documents/Inbox/

Image Editing App

Page 127: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers

P1P2P3

transferFile(_: metadata:)

~/Documents/Inbox/

Image Editing App

Page 128: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Outstanding File Transfers

P1P2P3

transferFile(_: metadata:)

~/Documents/Inbox/

WatchKit ExtensionImage

Editing App

Page 129: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer: Code

Page 130: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let url = // Retrieve URL of file

Background TransfersFile transfer: Code

Page 131: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let url = // Retrieve URL of filelet metadata = // Create dictionary of metadata

Background TransfersFile transfer: Code

Page 132: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let url = // Retrieve URL of filelet metadata = // Create dictionary of metadatalet fileTransfer = WCSession.defaultSession().transferFile(url, metadata:metadata)

Background TransfersFile transfer: Code

Page 133: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

let url = // Retrieve URL of filelet metadata = // Create dictionary of metadatalet fileTransfer = WCSession.defaultSession().transferFile(url, metadata:metadata)

Background TransfersFile transfer: Code

let transfers = WCSession.defaultSession().outstandingFileTransfers()

Page 134: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer: Delegate callback

Page 135: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveFile file: WCSessionFile) {

// Handle file URL and metadata in WCSessionFile object }

Background TransfersFile transfer: Delegate callback

Page 136: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveFile file: WCSessionFile) {

// Handle file URL and metadata in WCSessionFile object }

Background TransfersFile transfer: Delegate callback

WCSessionFile

Page 137: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveFile file: WCSessionFile) {

// Handle file URL and metadata in WCSessionFile object }

Background TransfersFile transfer: Delegate callback

WCSessionFile• File URL

Page 138: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveFile file: WCSessionFile) {

// Handle file URL and metadata in WCSessionFile object }

Background TransfersFile transfer: Delegate callback

WCSessionFile• File URL• Metadata

Page 139: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveFile file: WCSessionFile) {

// Handle file URL and metadata in WCSessionFile object }

Background TransfersFile transfer: Delegate callback

WCSessionFile• File URL• Metadata

Move file to take control

Page 140: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

// Receiver Callback func session(session: WCSession, didReceiveFile file: WCSessionFile) {

// Handle file URL and metadata in WCSessionFile object }

Background TransfersFile transfer: Delegate callback

WCSessionFile• File URL• Metadata

Move file to take control• File deleted from inbox

Page 141: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Page 142: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Very similar to user info transfer

Page 143: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Very similar to user info transferQueue files

Page 144: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Very similar to user info transferQueue filesAccess to outstanding content in queue

Page 145: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Very similar to user info transferQueue filesAccess to outstanding content in queueAdditional metadata

Page 146: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Very similar to user info transferQueue filesAccess to outstanding content in queueAdditional metadata• Small

Page 147: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Background TransfersFile transfer

Very similar to user info transferQueue filesAccess to outstanding content in queueAdditional metadata• Small• Property list types

Page 148: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive Messaging

Page 149: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingIntroduction

iOS App Watch App

Page 150: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability

Page 151: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability

Other app available

Page 152: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability

Other app availableRequired for messaging

Page 153: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability

Other app availableRequired for messagingProperty on WCSession

WCSession.defaultSession().reachable

Page 154: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability: iPhone

iOS App

Page 155: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability: iPhone

Devices connected

iOS App

Page 156: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability: iPhone

Devices connectedWatch app foreground

iOS App Watch App

Page 157: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability: iPhone

Devices connectedWatch app foreground

iOS App Watch App

session.reachable == true

Page 158: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReachability: Apple Watch

Page 159: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive Messaging

Devices connected

Reachability: Apple Watch

Page 160: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive Messaging

Devices connectedWatchKit extension foreground

Watch App

WatchKit Extension

Reachability: Apple Watch

Page 161: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive Messaging

Devices connectedWatchKit extension foreground

Watch App

WatchKit Extension

session.reachable == true

Reachability: Apple Watch

Page 162: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingBackground launching: iOS app only

Run Tracker App

WatchKit Extension

Page 163: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingBackground launching: iOS app only

Run Tracker App

WatchKit Extension

Page 164: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingBackground launching: iOS app only

Run Tracker App

WatchKit Extension

iOS App Background

Page 165: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingBackground launching: iOS app only

Run Tracker App

WatchKit Extension

iOS App Background

Page 166: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Page 167: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary

Page 168: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary

func sendMessage(message:, replyHandler:, errorHandler:)

Page 169: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary• Property list types

func sendMessage(message:, replyHandler:, errorHandler:)

Page 170: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary• Property list types

Data

func sendMessage(message:, replyHandler:, errorHandler:)

Page 171: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary• Property list types

Data

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 172: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary• Property list types

Data• Custom data

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 173: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingTypes

Dictionary• Property list types

Data• Custom data• Own serialization

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 174: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReplying

Page 175: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReplying

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 176: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReplying

Optional handler

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 177: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReplying

Optional handlerRecommended

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 178: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReplying

Optional handlerRecommended• Confirmation by receiver

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 179: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingReplying

Optional handlerRecommended• Confirmation by receiver

Separate delegate callbacks

func sendMessage(message:, replyHandler:, errorHandler:)

func sendMessageData(data:, replyHandler:, errorHandler:)

Page 180: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingDelegate callbacks

Page 181: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) { // Handle message, return reply }

Interactive MessagingDelegate callbacks

Page 182: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) { // Handle message, return reply }

Interactive MessagingDelegate callbacks

func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {

// Handle message }

Page 183: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Interactive MessagingCode

Page 184: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

if (WCSession.defaultSession().reachable) {

Interactive MessagingCode

Page 185: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

if (WCSession.defaultSession().reachable) {let message = // Create dictionary of content

Interactive MessagingCode

Page 186: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

if (WCSession.defaultSession().reachable) {let message = // Create dictionary of contentWCSession.defaultSession().sendMessage(message,

Interactive MessagingCode

Page 187: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

if (WCSession.defaultSession().reachable) {let message = // Create dictionary of contentWCSession.defaultSession().sendMessage(message, replyHandler: { ([String : AnyObject]) -> Void in

// Handle reply })

Interactive MessagingCode

Page 188: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

if (WCSession.defaultSession().reachable) {let message = // Create dictionary of contentWCSession.defaultSession().sendMessage(message, replyHandler: { ([String : AnyObject]) -> Void in

// Handle reply })

errorHandler: { (NSError) -> Void in // Handle error

});}

Interactive MessagingCode

Page 189: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchConnectivity

Page 190: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup

WatchConnectivity

Page 191: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

WatchConnectivity

Page 192: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state

WatchConnectivity

Page 193: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state Background transfers

WatchConnectivity

Page 194: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state Background transfers• Application context

WatchConnectivity

Page 195: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state Background transfers• Application context• User info transfer

WatchConnectivity

Page 196: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state Background transfers• Application context• User info transfer• File transfer

WatchConnectivity

Page 197: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state Background transfers• Application context• User info transfer• File transfer

Interactive messaging

WatchConnectivity

Page 198: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Setup • Delegate and activate

Session state Background transfers• Application context• User info transfer• File transfer

Interactive messaging• Live communication

WatchConnectivity

Page 199: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSession

Page 200: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionIntroduction

Page 201: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionIntroduction

Existing foundation class

Page 202: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionIntroduction

Existing foundation classHTTP requests

Page 203: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionIntroduction

Existing foundation classHTTP requestsAvailable in watchOS 2

Page 204: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionIntroduction

Existing foundation classHTTP requestsAvailable in watchOS 2Tetherless Wi-Fi

Page 205: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionWhen to use

Page 206: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionWhen to use

Server has new content

Page 207: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionWhen to use

Server has new contentSimilar to iOS apps

Page 208: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSessionWhen to use

Server has new contentSimilar to iOS apps• Content tailored for Apple Watch

Page 209: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

NSURLSession and WatchConnectivity

WatchKit Extension

Page 210: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

NSURLSession and WatchConnectivity

Application Context WatchKit Extension

Page 211: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

News App

NSURLSession and WatchConnectivity

Application Context WatchKit Extension

Page 212: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSession and WatchConnectivity

HTTP Request

Application Context WatchKit ExtensionNews App

Page 213: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

NSURLSession and WatchConnectivity

HTTP Request

Application Context WatchKit ExtensionNews App

Page 214: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Complications

Page 215: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Complications

Page 216: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Complications

Page 217: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsIntroduction

Page 218: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsIntroduction

Two primary tasks

Page 219: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsIntroduction

Two primary tasks• Updating clock face

Page 220: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsIntroduction

Two primary tasks• Updating clock face• Get content to Apple Watch

Page 221: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

Page 222: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

Weather App

Page 223: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

ComplicationsUpdating clock face

ClockKit

Page 224: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit

Page 225: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

Page 226: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

let server = CLKComplicationServer.sharedInstance()

Page 227: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

let server = CLKComplicationServer.sharedInstance()server.extendTimelineForComplication(aComplication)

Page 228: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

Page 229: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

getCurrentTimelineEntryForComplication(_:withHandler:)

Page 230: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

getCurrentTimelineEntryForComplication(_:withHandler:)getTimelineEntriesForComplication(_:beforeDate:limit:withHandler:)

Page 231: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

getCurrentTimelineEntryForComplication(_:withHandler:)getTimelineEntriesForComplication(_:beforeDate:limit:withHandler:)getTimelineEntriesForComplication(_:afterDate:limit:withHandler:)

Page 232: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsUpdating clock face

ClockKit

getCurrentTimelineEntryForComplication(_:withHandler:)getTimelineEntriesForComplication(_:beforeDate:limit:withHandler:)getTimelineEntriesForComplication(_:afterDate:limit:withHandler:)getNextRequestedUpdateDateWithHandler(_)

Page 233: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

Page 234: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit

Page 235: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit Content for past, present, and future

Page 236: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit Content for past, present, and futureBackground launched for updating

Page 237: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit Content for past, present, and futureBackground launched for updatingSpecify when content provided will be stale

Page 238: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit Content for past, present, and futureBackground launched for updatingSpecify when content provided will be stale BUDGETED

Page 239: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsUpdating clock face

ClockKit Content for past, present, and futureBackground launched for updatingSpecify when content provided will be stale BUDGETED

Creating Complications with ClockKit Pacific Heights Wednesday 11:00AM

Page 240: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Initial ActivationComplications

Page 241: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

Page 242: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

Page 243: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

Page 244: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

Page 245: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

Background

Page 246: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsInitial activation

NSURLSession

Page 247: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

Background

Page 248: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

Background

Page 249: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

Backgroundsession.reachable == true

Page 250: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

Backgroundsession.reachable == true

sendMessage(_:replyHandler:errorHandler:)

Page 251: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

Backgroundsession.reachable == true

sendMessage(_:replyHandler:errorHandler:)

Page 252: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

BackgroundWeather App Background

session.reachable == true

sendMessage(_:replyHandler:errorHandler:)

Page 253: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation

WatchKit Extension

BackgroundWeather App Background

session.reachable == true

sendMessage(_:replyHandler:errorHandler:)

Page 254: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation: Summary

Page 255: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation: Summary

WatchKit extension will get launched in the background

Page 256: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation: Summary

WatchKit extension will get launched in the backgroundNSURLSession

Page 257: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation: Summary

WatchKit extension will get launched in the backgroundNSURLSessionSpecial complication update where iOS app is reachable

Page 258: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsInitial activation: Summary

WatchKit extension will get launched in the backgroundNSURLSessionSpecial complication update where iOS app is reachablePopulate as much as possible of the ClockKit timeline

Page 259: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Staying CurrentComplications

Page 260: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsStaying current

Cloud

iPhone Apple Watch

Page 261: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed

Cloud

iPhone Apple Watch

Page 262: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed

Cloud

iPhone Apple Watch Sports App

Page 263: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

iPhone Apple Watch

Cloud

Page 264: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

iPhone Apple Watch

Cloud

Surfing App

Page 265: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

NSURLSession

Page 266: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

NSURLSession ClockKit

Page 267: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

Page 268: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsRequested interval fetch

Page 269: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

BackgroundRequest

ComplicationsRequested interval fetch

Page 270: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

BackgroundRequest

ComplicationsRequested interval fetch

Response

Page 271: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

BackgroundRequest Extend

Timeline

ComplicationsRequested interval fetch

Response

Page 272: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

BackgroundRequest Timeline

UpdatesExtend

Timeline

ComplicationsRequested interval fetch

Response

Page 273: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

BackgroundRequest Timeline

UpdatesRequest

Next UpdateExtend

Timeline

ComplicationsRequested interval fetch

Response

Page 274: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Request Timeline UpdatesRequest

Next UpdateExtend

Timeline

ComplicationsRequested interval fetch

Response

Page 275: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

Page 276: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

Page 277: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch

Page 278: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Request Update ClockKit

ComplicationsRequested interval fetch

Response

Page 279: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Page 280: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Use a NSURLSession background session if possible

Page 281: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Use a NSURLSession background session if possibleNSURLSession requests might not complete until next time the extension runs

Page 282: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Use a NSURLSession background session if possibleNSURLSession requests might not complete until next time the extension runsRequested update time is a suggestion

Page 283: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Use a NSURLSession background session if possibleNSURLSession requests might not complete until next time the extension runsRequested update time is a suggestionKeep runtime as short as possible

Page 284: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Use a NSURLSession background session if possibleNSURLSession requests might not complete until next time the extension runsRequested update time is a suggestionKeep runtime as short as possibleClockKit

Page 285: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsRequested interval fetch: Summary

Use a NSURLSession background session if possibleNSURLSession requests might not complete until next time the extension runsRequested update time is a suggestionKeep runtime as short as possibleClockKit

BUDGETED

BUDGETED

Page 286: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed

Cloud

iPhone Apple Watch

Page 287: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed

Cloud

iPhone Apple Watch Sports App

Page 288: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed

Page 289: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Page 290: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

PushKit

Page 291: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 2

WatchConnectivity

Page 292: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Pushed: Part 1Complications

Page 293: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

PushKit

Page 294: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Page 295: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Updated PushKit framework

Page 296: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Updated PushKit frameworkpushRegistry = PKPushRegistry(queue: dispatch_get_main_queue())

Page 297: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Updated PushKit frameworkpushRegistry = PKPushRegistry(queue: dispatch_get_main_queue())pushRegistry.delegate = self // conforms to PKPushRegistryDelegate

Page 298: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Updated PushKit frameworkpushRegistry = PKPushRegistry(queue: dispatch_get_main_queue())pushRegistry.delegate = self // conforms to PKPushRegistryDelegatepushRegistry.desiredPushTypes = [PKPushTypeComplication]

Page 299: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Updated PushKit frameworkpushRegistry = PKPushRegistry(queue: dispatch_get_main_queue())pushRegistry.delegate = self // conforms to PKPushRegistryDelegatepushRegistry.desiredPushTypes = [PKPushTypeComplication]

func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!)

// Upload push token to server to enable it to send pushes

Page 300: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 1

Updated PushKit frameworkpushRegistry = PKPushRegistry(queue: dispatch_get_main_queue())pushRegistry.delegate = self // conforms to PKPushRegistryDelegatepushRegistry.desiredPushTypes = [PKPushTypeComplication]

func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!)

// Upload push token to server to enable it to send pushesfunc pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!)

// Massage content and prepare to send it to the complication

Page 301: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Pushed: Part 2Complications

Page 302: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 2

WatchConnectivity

Page 303: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 2

Page 304: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 2

session.transferUserInfo(timeLineEntry1)session.transferUserInfo(timeLineEntry2)...

Page 305: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 2

session.transferUserInfo(timeLineEntry1)session.transferUserInfo(timeLineEntry2)...session.transferCurrentComplicationUserInfo(presentTimeLineEntry)

Page 306: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Part 2

session.transferUserInfo(timeLineEntry1)session.transferUserInfo(timeLineEntry2)...session.transferCurrentComplicationUserInfo(presentTimeLineEntry)

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {

// Call ClockKit APIs to update complication}

Page 307: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Pushed: SummaryComplications

Page 308: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Page 309: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Push Registration

Page 310: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Push Registration

Page 311: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Push RegistrationPush Token

Page 312: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Push Registration

Push Token

Page 313: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Push Registration

Push TokenPush Token

Page 314: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Sports App

ComplicationsPushed: Summary

Push Registration

Push Token

Push Token

Page 315: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

Push Registration

Push Token

Push Token

Page 316: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

Page 317: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Push

ComplicationsPushed: Summary

Page 318: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Push

ComplicationsPushed: Summary

Page 319: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

Sports App Background

Page 320: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

U1U2

U3

Outstanding User Info Transfers

transferUserInfo(_:)

ComplicationsPushed: Summary

Sports App Background

Page 321: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

U1U2U3

Outstanding User Info Transfers

ComplicationsPushed: Summary

Sports App Background

Page 322: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

U1U2U3

U4

transferCurrent ComplicationUserInfo(_:)

Outstanding User Info Transfers

ComplicationsPushed: Summary

Sports App Background

Page 323: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

U1U2U3 U4

Outstanding User Info Transfers

ComplicationsPushed: Summary

Page 324: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

U1U2U3 U4

Outstanding User Info Transfers

ComplicationsPushed: Summary

Page 325: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

U1U2U3

U4

Outstanding User Info Transfers

ComplicationsPushed: Summary

WatchKit Extension

Background

Page 326: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Outstanding User Info Transfers

ComplicationsPushed: Summary

WatchKit Extension

Background

Page 327: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsPushed: Summary

Page 328: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

WatchKit Extension

Background

ComplicationsPushed: Summary

Update ClockKit

Page 329: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

Update ClockKit

Page 330: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

Page 331: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKit

Page 332: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplication

Page 333: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplicationComplication active on clock face

Page 334: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplicationComplication active on clock faceLimited number of pushes per day

Page 335: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplicationComplication active on clock faceLimited number of pushes per daytransferUserInfo()

Page 336: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplicationComplication active on clock faceLimited number of pushes per daytransferUserInfo()transferCurrentComplicationUserInfo()

Page 337: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplicationComplication active on clock faceLimited number of pushes per daytransferUserInfo()transferCurrentComplicationUserInfo()ClockKit

Page 338: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

ComplicationsPushed: Summary

PushKitPKPushTypeComplicationComplication active on clock faceLimited number of pushes per daytransferUserInfo()transferCurrentComplicationUserInfo()ClockKit

BUDGETED

BUDGETED

BUDGETED

Page 339: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Wrap Up

Page 340: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Summary

WatchConnectivityNSURLSessionComplications

Page 341: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

More Information

DocumentationwatchOS 2 Transition GuideWatchKit Programming Guide

Sample CodeListerWatchKit Catalog

http://developer.apple.com/watchOS

Technical SupportApple Developer ForumsDeveloper Technical Support

General InquiriesJake Behrens, watchOS Frameworks [email protected]

Page 342: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Related Sessions

Introducing WatchKit for watchOS 2 Presidio Tuesday 10:00AM

Privacy and Your App Pacific Heights Tuesday 2:30PM

Building Watch Apps Pacific Heights Tuesday 4:30PM

Security and Your Apps Mission Tuesday 4:30PM

Creating Complications with ClockKit Pacific Heights Wednesday 11:00AM

Networking with NSURLSession Pacific Heights Thursday 9:00AM

WatchKit Tips and Tricks Presidio Friday 10:00AM

Page 343: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession

Labs

Watch Connectivity Lab Frameworks Lab B Thursday 1:30PM

WatchKit and ClockKit Complications Lab Frameworks Lab A Friday 1:30PM

Page 344: Introducing Watch Connectivity - Apple Developer...News App Social Networking App iOS Game Image Editing App Run Tracker App Weather App Surfing App Sports App WatchConnectivity NSURLSession