Programowanie aplikacji na apple watch

Post on 07-Jan-2017

365 views 0 download

Transcript of Programowanie aplikacji na apple watch

Programowanie aplikacji na Apple Watch

Aleksander Kania kania@tsh.ioiOS Developer

@aleksanderkania

Watch Sport Watch Watch Edition

Watch Sport Watch Watch Edition

Od 1699 PLN

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN Od 47 000 PLN

Watch Sport Watch Watch Edition

Od 1699 PLN Od 2749 PLN Od 47 000 PLN

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

Udostępnianie swojego tętna znajomym

... ale tylko posiadającym Apple Watcha

Amazing.

Brak GPS'a.

WatchKit

HealthKit

Core Data Core Location

HomeKit

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

Standardowe aplikacje

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

Standardowe aplikacje

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

Glances

Glances

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

Notyfikacje

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

dynamiczne.

Liczenie przebytego dystansu

Wyświetlanie przewidywanego czasu dla zadanego dystansu

Wyliczanie maksymalnego minutowego poboru tlenu (v02max)

Licznik wyświetlajacy przebyty dystans i czas

Licznik wyświetlajacy przebyty dystans i czas

Wyświetlanie aktualnego wskaźnika vo2max

Architektura aplikacji watchOS

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

Cykl życia aplikacji watchOS

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

iOS ViewController

watchOS InterfaceController

InterfaceController: WKInterfaceController {

InterfaceController: WKInterfaceController {

func awakeWithContext(context: AnyObject?) {

InterfaceController: WKInterfaceController {

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

InterfaceController: WKInterfaceController {

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

DEMO

Problem z synchronizacją

Rozwiązanie?

Istnieje.

Watch Connectivity Framework

Watch Connectivity Frameworkimport WatchConnectivity

if(WCSession.isSupported()) {

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

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

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

}

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

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

updateApplicationContext(context)

} catch {

}

Apple Watch side

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

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

dispatch_async(dispatch_get_main_queue()) {

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

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

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}

Pytania?