tworzenie aplikacji na platformę watchos2
Post on 19-Feb-2017
233 Views
Preview:
TRANSCRIPT
T W O R Z E N I E A P L I K A C J I N A P L AT F O R MĘ W AT C H O S 2
S M A R T W A T C H W W Y D A N I U A P P L E
K R Ó T K A A G E N D A
• Dlaczego Swift (w GetResponse)?
• Różnice w projektowaniu aplikacji na watchOS2
• Lifecycle i Komunikacja w aplikacjach na tej platformie
• Implementacja aplikacji GetResponse na watchOS2 oraz napotkane problemy
• Glances & Complications
• Co jest nie tak z tworzeniem aplikacji na Apple Watcha?
D L A C Z E G O S W I F T ?
Mimo tego, że Apple chwaliło się, ze aplikacja WWDC była napisana w Swifcie, tak naprawdę tylko 3 z 13 klas w całej aplikacji było napisane w Swifcie.
Jedyna aplikacja w pełni napisana w Swifcie w systemie iOS to systemowy Kalkulator.
O C Z Y M P O W I N N IŚM Y PA M IĘTAĆ P O D C Z A S P R O J E K T O W A N I A A P L I K A C J I N A A P P L E W AT C H ?
• Ma być to rozszerzenie najważniejszych funkcji aplikacji, a nie jej lustrzana kopia
• Użytkownik ma korzystać z aplikacji góra kilka(naście) sekund!
• W komunikacji nie powinnismy wysyłać dużych zbiorów danych ze względu na ograniczony tzw. „daily budget” narzucony przez Apple
O R ÓŻN I C A C H W P R O J E K T O W A N I U I N T E R F E J S Ó W
G D Z I E M O J E W I D O K I , C Z Y L I
R ÓŻN I C E M IĘD Z Y P R O J E K T O W A N I E M I N T E R F E J S Ó W
• Największy problem - brak UIView który jest postawą wszystkich widoków w normalnym iOS, ogranicza ilość bibliotek z których można skorzystać
• Brak natywnych animacji - jedynie animacje poklatkowe zlozone z obrazkow
• Nie ma dowolności w tworzeniu interfejsu, wszystkie elementy układamy na tzw. siatce, w następujących po sobie grupach interfejsu (WKInterfaceGroup)
• Ilość elementów interfejsu jest ograniczona do odpowiedników na Apple Watch
• W przypadku Glances i Complications sytuacja jest jeszcze bardziej utrudniona, ale o tym potem
L I F E C Y C L E - N A C O U W AŻAĆ
• W przypadku gdy korzystamy z interfejsu typu page-based, podczas uruchamiania interefejsu aplikacja wywoła willActivate i willDeactivate dla każdego kontrolera znajdującego się na liście - by przygotować cache widoków
K O M U N I K A C J A Z E G A R K A I I P H O N E
C A ŁOŚĆ K O M U N I K A C J I M A O D B Y W AĆ S IĘ A S Y N C H R O N I C Z N I E
P R Z E D K O R Z Y S TA N I E M Z N I E K T Ó R Y C H M E T O D K O M U N I K A C J I , Z E G A R E K I T E L E F O N M U S ZĄ D Z I E L IĆ A K T Y W NĄ S E S JĘ B L U E T O O T H
K O M U N I K A C J A - D O S TĘP N E M E T O D Y
updateApplicationContextDo wykonywania update kontekstu aplikacji, niezależnie od stanu aktualnej sesji komunikacji - w przypadku utraty połączenia, wiadomości są kolejkowane. Komunikacja jednokierunkowa.
transferFile
Do asynchronicznego przesyłania plików między telefonem a zegarkiem.
sendMessageDo asynchronicznego przesyłania danych między zegarkiem a telefonem tylko podczas aktywnej sesji Bluetooth, najczęściej wykorzystywana, wiadomości mogą się powtarzać. Komunikacja jest dwukierunkowa - metoda zawiera replyHandler
P L U S Y I M I N U S YC O M P L I C A T I O N S
• Predefiniowane templatki
• Klasy typu Provider do formatowania tekstu w zależności od typu
• Time Travel
• Time Budget
• Czas odpowiedzi z telefonu/API zrywa połączenia
• Nie można określić dokładnego czasu odświeżenia danych
C Z Y M SĄ ?G L A N C E S
Glances to duże widgety które wyświetlają się po wykonaniu gestu na ekranie głównym zegarka - mają być najszybszym sposobem na dotarcie do najważniejszej informacji z naszej aplikacji
Technicznie to jeden dodatkowy kontroler którego metoda willActivate jest wywoływana za każdym razem gdy użytkownik chce skorzystać z Glance.
P L U S YG L A N C E S
• Łatwość implementacji - jeden controller
• Prostota użycia
• Wysoko oceniany przez użytkowników feature - must have!
M I N U S YG L A N C E S
• Predefiniowane templatki - aby zrealizować mockup graficzny należy znależć odpowiedni layout
• Trudny w testowaniu - potrzebny osobny scheme który nie zawsze chce dobrze działać
N A P O T K A N E P R O B L E M Y P O D C Z A S T W O R Z E N I A A P L I K A C J I
C o c o a P o d s ( i O S d e p e n d e n c y m a n a g e r )Aby korzystać z CocoaPods zarówno w Swifcie jak i Objective-C, w ustawieniach należało dodać dyrektywę use_frameworks! co wprowadza sporo zamieszania w projekcie
Ty p y d a n y c h n a s t y k u ję z y k ó w S w i f t / O b j e c t i v e - CZe względu na różnice językowe, nie mogliśmy skorzystać z modeli używanych w głównym projekcie (brak odpowiednika JsonModel w Swifcie) Przesyłanie danych między telefonem/zegarkiem odbywa się za pomocą przesyłanych słowników (tablic wielowymiarowych)
Niestety i tutaj pojawiał się problem - gdy wysyłaliśmy nieodpowiedni typ danych liczbowych wewnątrz słownika, liczba zero była traktowana jako null po konwersji danych na Swift’a
N A P O T K A N E P R O B L E M Y P O D C Z A S T W O R Z E N I A A P L I K A C J I C . D .
P ro b l e m y z k o m u n i k a c ją
Gdy korzystamy z WatchConnectivity, nie mamy dostępu do informacji dotyczących tzw. „daily budget” - czyli dziennego/godzinnego limitu odświeżania danych oraz ogólnej komunikacji między zegarkiem a telefonem
Częste wysyłanie dużych zbiorów danych powoduje zerwanie sesji między zegarkiem a telefonem i brak reakcji na to zachowanie ze strony aplikacji.
O d s w i e ża n i e C o m p l i c a t i o n s
W y k re s n a G l a n c e s
C O J E S T N I E TA K Z T W O R Z E N I E M A P L I K A C J I N A WAT C H O S 2 ?• Symulator i jego błędy
• Uruchamianie debugowe na prawdziwym urządzeniu to droga przez mękę
• Debugowanie dwóch urządzeń na raz (aplikacji i zegarka), wymaga podłączenia się do procesu, co nie zawsze działa
• Problemy z komunikacją między symulatorami
• Mało wartościowej dokumentacji od developerów
• Nieudokumentowany time budget oraz ograniczenie wielkości wiadomości
• Jeśli aplikacja była wcześniej pisana w Objective-C, a zegarek pisany jest w Swifcie, to czeka Cię droga przez piekło
P Y TA N I A ?
@ m ko l e k / m ko l e k @ g e t r e s p o n s e . c o m
top related