Programowanie aplikacji na apple watch

54
Programowanie aplikacji na Apple Watch Aleksander Kania [email protected] iOS Developer @aleksanderkania

Transcript of Programowanie aplikacji na apple watch

Page 1: Programowanie aplikacji na apple watch

Programowanie aplikacji na Apple Watch

Aleksander Kania [email protected] Developer

@aleksanderkania

Page 2: Programowanie aplikacji na apple watch
Page 3: Programowanie aplikacji na apple watch

Watch Sport Watch Watch Edition

Page 4: Programowanie aplikacji na apple watch

Watch Sport Watch Watch Edition

Od 1699 PLN

Page 5: Programowanie aplikacji na apple watch

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN

Page 6: Programowanie aplikacji na apple watch

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN

Page 7: Programowanie aplikacji na apple watch

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN Od 47 000 PLN

Page 8: Programowanie aplikacji na apple watch

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN Od 47 000 PLN

Page 9: Programowanie aplikacji na apple watch
Page 10: Programowanie aplikacji na apple watch

- Wysyłanie i odbieranie smsów !- Odbieranie i prowadzenie rozmów !- Sterowanie kamerą iPhone'a !- Mierzenie tętna

Page 11: Programowanie aplikacji na apple watch

Udostępnianie swojego tętna znajomym

Page 12: Programowanie aplikacji na apple watch

... ale tylko posiadającym Apple Watcha

Page 13: Programowanie aplikacji na apple watch

Amazing.

Page 14: Programowanie aplikacji na apple watch

Brak GPS'a.

Page 15: Programowanie aplikacji na apple watch
Page 16: Programowanie aplikacji na apple watch
Page 17: Programowanie aplikacji na apple watch
Page 18: Programowanie aplikacji na apple watch

WatchKit

Page 19: Programowanie aplikacji na apple watch

HealthKit

Core Data Core Location

HomeKit

Page 20: Programowanie aplikacji na apple watch

https://developer.apple.com/watchkit/

Standardowe aplikacje

Page 21: Programowanie aplikacji na apple watch

https://developer.apple.com/watchkit/

Standardowe aplikacje

Aplikacje posiadające w pełni funkcjonalny interfejs użytkownika.

Page 22: Programowanie aplikacji na apple watch

Glances

Page 23: Programowanie aplikacji na apple watch

Glances

Ekran aplikacji wyświetlający najbardziej istotne rzeczy np. godzinę w Warszawie i Moskwie.

Page 24: Programowanie aplikacji na apple watch

Notyfikacje

Standardowe notyfikacje mówiące nam np. o nadchodzącej wiadomości lub połączeniu. Mogą one być statyczne jak i

dynamiczne.

Page 25: Programowanie aplikacji na apple watch

Liczenie przebytego dystansu

Wyświetlanie przewidywanego czasu dla zadanego dystansu

Wyliczanie maksymalnego minutowego poboru tlenu (v02max)

Licznik wyświetlajacy przebyty dystans i czas

Page 26: Programowanie aplikacji na apple watch
Page 27: Programowanie aplikacji na apple watch

Licznik wyświetlajacy przebyty dystans i czas

Wyświetlanie aktualnego wskaźnika vo2max

Page 28: Programowanie aplikacji na apple watch

Architektura aplikacji watchOS

Page 29: Programowanie aplikacji na apple watch

https://developer.apple.com/library/watchos/documentation/General/Conceptual/AppleWatch2TransitionGuide/index.html#//apple_ref/doc/uid/TP40015234-CH2-SW1

Page 30: Programowanie aplikacji na apple watch

Cykl życia aplikacji watchOS

Page 31: Programowanie aplikacji na apple watch

https://developer.apple.com/library/watchos/documentation/General/Conceptual/AppleWatch2TransitionGuide/UpdatetheAppCode.html#//apple_ref/doc/uid/TP40015234-CH6-SW2

Page 32: Programowanie aplikacji na apple watch

iOS ViewController

watchOS InterfaceController

Page 33: Programowanie aplikacji na apple watch

InterfaceController: WKInterfaceController {

Page 34: Programowanie aplikacji na apple watch

InterfaceController: WKInterfaceController {

func awakeWithContext(context: AnyObject?) {

Page 35: Programowanie aplikacji na apple watch

InterfaceController: WKInterfaceController {

func awakeWithContext(context: AnyObject?) {func willActivate() {

Page 36: Programowanie aplikacji na apple watch

InterfaceController: WKInterfaceController {

func awakeWithContext(context: AnyObject?) {func willActivate() {func didDeactivate() {

Page 37: Programowanie aplikacji na apple watch

DEMO

Page 38: Programowanie aplikacji na apple watch
Page 39: Programowanie aplikacji na apple watch

Problem z synchronizacją

Page 40: Programowanie aplikacji na apple watch

Rozwiązanie?

Page 41: Programowanie aplikacji na apple watch

Istnieje.

Page 42: Programowanie aplikacji na apple watch

Watch Connectivity Framework

Page 43: Programowanie aplikacji na apple watch

Watch Connectivity Frameworkimport WatchConnectivity

Page 44: Programowanie aplikacji na apple watch

if(WCSession.isSupported()) {

Page 45: Programowanie aplikacji na apple watch

if(WCSession.isSupported()) {let session = WCSession.defaultSession()

Page 46: Programowanie aplikacji na apple watch

if(WCSession.isSupported()) {let session = WCSession.defaultSession() session.delegate = self

Page 47: Programowanie aplikacji na apple watch

if(WCSession.isSupported()) {let session = WCSession.defaultSession() session.delegate = self session.activateSession()

}

Page 48: Programowanie aplikacji na apple watch

do {self.contextDictionary["timeValue"] = self.currentTimeLabel.text

self.contextDictionary["timerCount"] = self.timerCountlet context = self.contextDictionarytry WCSession.defaultSession().

updateApplicationContext(context)

} catch {

}

Page 49: Programowanie aplikacji na apple watch

Apple Watch side

Page 50: Programowanie aplikacji na apple watch

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

Page 51: Programowanie aplikacji na apple watch

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

dispatch_async(dispatch_get_main_queue()) {

Page 52: Programowanie aplikacji na apple watch

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

dispatch_async(dispatch_get_main_queue()) {self.currentTimeLabel.setText(applicationContext["timeValue"] as? String)

Page 53: Programowanie aplikacji na apple watch

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

dispatch_async(dispatch_get_main_queue()) {self.currentTimeLabel.setText(applicationContext["timeValue"] as? String)

self.timerCount = applicationContext["timerCount"] as? Int}

Page 54: Programowanie aplikacji na apple watch

Pytania?