Apple Watch w pigułce: wprowadzenie funkcji dla programistów iOS

Opublikowany: 2022-03-11

Wokół Apple Watch SDK, ogłoszonego na WWDC w czerwcu zeszłego roku i wydanego niedawno, było wiele niepokoju.

To dopiero pierwsza runda z ograniczoną funkcjonalnością. Apple Watch v2 nastąpi, ale nie tak szybko – więc myślący przyszłościowo programiści iOS powinni być przygotowani na kilka miesięcy.

Nastroje wśród deweloperów są niezwykle zróżnicowane. Wielu programistów iOS jest rozczarowanych wieloma ograniczeniami nałożonymi przez Apple Watch SDK i jego funkcje. Z drugiej strony wielu z nas jest podekscytowanych, podczas gdy inni nie są zbyt daleko od neutralnej pozycji. Ale przecież wszyscy najwyraźniej cieszą się, że mają nową zabawkę do zabawy.

Jedną z rzeczy, które rzucają się w oczy, jest to, jak określa się użytkowników Apple Watch. Nie są użytkownikami ani użytkownikami urządzeń mobilnych , ani użytkownikami zegarków ani (z odrobiną oryginalności) obserwatorami . Są po prostu użytkownikami . Termin, który brzmi trochę dziwnie, ponieważ jeśli użytkownik użyje , co sugeruje, że wchodzi w interakcję, użytkownik nosi , i brzmi to jak pasywne użycie. Oczywiście Apple Watch nie jest urządzeniem pasywnym. Łączy w sobie tradycyjne cechy zegarka z bardziej zaawansowanymi opcjami, które umożliwia nowoczesna technologia, zwłaszcza w połączeniu z iPhonem. Nie tak dawno telefony zaczęły być czymś więcej niż tylko telefonami – historia się powtarza.

Jednak pod koniec nazwa użytkownika wydaje się być mądrym wyborem. Przynajmniej pisząc historyjki użytkownika nie muszę w pełni określać „Jako użytkownik zegarka Apple chcę…”, mogę po prostu skrócić to do „Jako użytkownik , chcę…” – mniej dwuznaczności.

Aplikacje na Apple Watch prawdopodobnie na zawsze zmienią sposób, w jaki użytkownicy zegarków (i twórcy aplikacji na iOS) myślą o technologii.

Urządzenie i interfejs użytkownika

Pomijając wszystkie funkcje Apple Watch, które nie są ściśle związane z rozwojem, najważniejszymi problemami, z którymi muszą się zmierzyć projektanci i programiści, są rozmiary – w rzeczywistości istnieją 2 różne modele Apple Watch:

  • Ekran 38mm o rozdzielczości 272x340 px
  • Ekran 42mm o rozdzielczości 312x390 px

z wyświetlaczem Retina w obu przypadkach.

Nie trzeba dodawać, że programiści iOS zapewniają, że aplikacja wygląda dobrze w obu wersjach.

Łączność z Apple Watch

Apple Watch komunikuje się z towarzyszącym iPhone'em przez Bluetooth 4.0, a także obsługuje NFC. Podobno nie ma łączności WiFi. Chociaż może tethering przez iPhone'a i korzystać zarówno z Wi-Fi, jak i komórkowego połączenia danych. Ale w informacji prasowej Apple wyraźnie stwierdza, że ​​obsługuje również Wi-Fi 802.11b/g.

Interakcja z użytkownikiem

Interakcja z użytkownikiem (lub interakcja z użytkownikiem, jeśli jest to preferowane) może odbywać się na 4 różne sposoby:

  • prosty dotyk: typowym przykładem jest dotknięcie przycisku
  • mocny dotyk: aktywowany przez zastosowanie większej siły podczas dotykania i przytrzymywania ekranu. Podobnie jak kliknięcie prawym przyciskiem myszy na komputerze, wyświetli menu kontekstowe (zawierające do 4 pozycji)
  • gest: przesunięcie w pionie, aby przewinąć, przesunięcie w poziomie, aby przejść między stronami, przesunięcie lewej krawędzi, aby przejść wstecz
  • cyfrowa korona: wejście sprzętowe używane do precyzyjnego przewijania

Istnieją pewne ograniczenia dotyczące interakcji z użytkownikiem, w szczególności dotyczące gestów:

  • są z góry określone, więc niestandardowe gesty nie są obsługiwane
  • multi-touch nie jest obsługiwany, więc nie ma szczypania, aby powiększyć lub podobnych gestów wymagających więcej niż jednego palca

Oto przykład menu kontekstowego z przewodnika Apple WatchKit.

Funkcje aplikacji Apple Watch niezaprzeczalnie będą wymagać w przyszłości obszernych samouczków programistycznych. Na razie zapoznaj się z podstawami.

Interfejs użytkownika

Mówiąc o interfejsie użytkownika Apple Watch, istnieje kilka ograniczeń nałożonych przez zmniejszony rozmiar ekranu, wybory projektowe, a w wielu przypadkach jako naturalną konsekwencję podstawowego sprzętu. Spodziewamy się, że niektóre z nich zmienią się na lepsze w przyszłych wydaniach SDK, chociaż nie można przewidzieć ani przewidzieć, co się faktycznie zmieni.

Pierwsze ograniczenie dotyczy sposobu implementacji interfejsu użytkownika: tylko za pomocą scenorysów.

Nawigacja Apple Watch

WatchKit oferuje dwa wzajemnie wykluczające się sposoby nawigacji między widokami aplikacji Apple Watch:

  • hierarchiczny model nawigacji, podobny do tego używanego w iOS, z widokami ułożonymi w stos podczas nawigacji
  • model oparty na płaskiej stronie, w którym użytkownik może poruszać się między stronami, przesuwając palcem w lewo i w prawo

Niestety połączenie tych dwóch modeli nawigacji w tej samej aplikacji nie jest możliwe. Jeden z nich musi zostać wybrany i używany w całej aplikacji.

Jednak każdy kontroler interfejsu może prezentować modalny kontroler interfejsu, który może być albo pojedynczym kontrolerem interfejsu, albo wieloma kontrolerami interfejsów, rozmieszczonymi przy użyciu modelu nawigacji po stronach.

Elementy interfejsu użytkownika

Istnieje 11 różnych komponentów interfejsu:

  • przycisk
  • suwak
  • obraz
  • etykieta
  • separator
  • suwak
  • przełącznik
  • stół
  • data: automatyczne wyświetlanie aktualnej daty lub godziny
  • timer: wyświetlanie licznika czasu, automatycznie aktualizowane
  • grupa: kontener na jeden lub więcej komponentów podrzędnych
  • mapa: wyświetlanie nieinteraktywnej mapy, opcjonalnie z maksymalnie 5 adnotacjami

Układy

Komponent group może służyć do łączenia elementów interfejsu Apple Watch w układzie pionowym lub poziomym . Elementy zostaną automatycznie rozłożone w zależności od ich wielkości. Dostępny jest tu pewien stopień elastyczności, biorąc pod uwagę, że grupy można zagnieżdżać.

Niestety układ automatyczny nie jest dostępny. Ale biorąc pod uwagę, że interfejs użytkownika jest znacznie prostszy w porównaniu do odpowiednika iOS, to chyba nie jest duża strata.

W przypadku list składnik tabeli tworzy zawartość i zarządza nią przy użyciu modelu z jedną kolumną, podobnie jak UITableView . Jednak nie używa wzorca delegowania — źródło danych jest dostarczane bezpośrednio do tabeli, najpierw określając liczbę wierszy, a następnie inicjując zawartość każdego wiersza w pętli for. Pozytywnie, nadal można używać niestandardowych wierszy tabeli (tj. komórek w żargonie iOS)

Spojrzenia

Przeglądy to widoki tylko do odczytu, jednostronicowe i bez możliwości przewijania, używane do wyświetlania migawki aktualnych i odpowiednich danych specyficznych dla aplikacji. Żadna interakcja użytkownika nie jest dozwolona, ​​z wyjątkiem zdarzenia dotknięcia. Stuknij w rzut oka , aby po prostu uruchomić aplikację, opcjonalnie zapewniając kontekst, aby aplikacja wyświetlała określony kontroler interfejsu.

Na przykład aplikacja pogodowa Apple Watch może używać Glance do wyświetlania aktualnej temperatury, lokalizacji itp. Dotykając go, aplikacja otwiera się, wyświetlając bardziej szczegółowe informacje.

Oto przykładowe spojrzenie z oficjalnego przewodnika Apple WatchKit.

To jest przykład funkcji podglądu Apple Watch w przykładowej aplikacji Apple Watch.

Powiadomienia Apple Watch

Istnieją 2 typy powiadomień: krótkie spojrzenie i długie spojrzenie .

Powiadomienie o krótkim spojrzeniu służy do ostrzegania użytkownika, że ​​coś się stało, i jest automatycznie odrzucane po opuszczeniu nadgarstka. Układ jest bardzo prosty i składa się z ikony aplikacji, nazwy aplikacji i tytułu powiadomienia.

Tak może wyglądać powiadomienie Apple Watch w aplikacji.

Trzymanie nadgarstka uniesionego przez jakiś czas lub wyraźne dotknięcie powiadomienia o krótkim spojrzeniu zmieni je w powiadomienie o długim spojrzeniu . Ten rodzaj powiadomień dostarcza więcej szczegółów i wspiera interakcję użytkownika za pomocą konfigurowalnych przycisków. Te przyciski mogą wysyłać powiadomienia do aplikacji. W przeciwieństwie do krótkiego powiadomienia, użytkownik musi wyraźnie odrzucić powiadomienie o długim wyglądzie, dotykając przycisku, który jest automatycznie wyświetlany na dole widoku.

Powiadomienie o długim wyglądzie jest jedną z charakterystycznych funkcji Apple Watch, o których powinni wiedzieć programiści.

Więcej informacji o korzystaniu z powiadomień Apple Watch można znaleźć tutaj.

Rozwój

Architektura

Pobierając wersję Xcode obsługującą WatchKit (obecnie wersja beta 6.2) i próbując rozpocząć pracę z projektem WatchKit bez czytania jakiejkolwiek dokumentacji, programista może czuć się zdezorientowany, ponieważ nie ma szablonu WatchKit:

Aplikacje Apple Watch można dodawać tylko jako nowy cel do jednej z istniejących aplikacji iOS.

Nie ma samodzielnej aplikacji do zegarka, a aplikację do zegarka można dodać tylko jako nowy cel do istniejącej aplikacji na iOS.

Aby opracować aplikację Apple Watch, zacznij od bieżącej aplikacji na iOS i dodaj aplikację Watch jako nowy cel.

Powodem tego jest architektura i sposób, w jaki aplikacja zegarka współdziała z powiązaną aplikacją na iOS:

Zrozumienie sposobu, w jaki zegarek Apple Watch współdziała z innymi aplikacjami na iOS na iPhonie, jest nieodłącznym elementem bycia odnoszącym sukcesy programistą Apple Watch.

Po uruchomieniu aplikacji na zegarku automatycznie uruchamia się towarzyszące rozszerzenie iOS. Oba działają w synergii, z aplikacją zegarka wyświetlającą treści użytkownikowi i reagującą na interakcje, podczas gdy rozszerzenie iOS robi wszystko inne. W rzeczywistości na zegarku nie jest wykonywany żaden kod aplikacji: całe przetwarzanie jest delegowane do rozszerzenia iOS.

Model ten bardzo przypomina model przeglądarki <-> aplikacji sieci Web, w którym logika domeny jest wykonywana po stronie serwera, a strona klienta jest odpowiedzialna za wyświetlanie treści użytkownikowi i reagowanie na jego działania.

Aplikacja Watch, która jest zainstalowana na urządzeniu, składa się ze scenorysu i wszystkich powiązanych zasobów statycznych, spakowanych w pakiet. Ten pakiet jest statyczny, co oznacza, że ​​dodawanie lub zmienianie jakichkolwiek zasobów, widoków, obrazów itp. nie jest możliwe w czasie wykonywania.

Ten statyczny model klient-serwer nakłada kilka ograniczeń na programistę iOS, który chce dodać aplikację Watch do swojego repertuaru, i jest to prawdopodobnie jeden z głównych powodów, dla których niektórzy programiści nie zareagowali pozytywnie. Inna popularna uwaga dotyczy animacji: są po prostu nieobsługiwane. Jedynym sposobem na naśladowanie animacji jest pakowanie pojedynczych klatek do aplikacji zegarka, a następnie symulowanie animacji poprzez wyświetlanie obrazów w sekwencji. Dobrą wiadomością jest to, że poprzez sekwencyjne nazywanie ramek można zautomatyzować animację bezpośrednio z Interface Builder, chociaż to samo można zrobić z kodu za pomocą jednego wywołania metody kontroli obrazu.

Jednak Apple już zapowiedział, że w przyszłym roku zostanie wydana nowa wersja, z obsługą aplikacji natywnych, dla których nie ma jeszcze dalszych szczegółów.

Struktura Apple Watch: szybki przegląd

WatchKit nie używa, nie dziedziczy ani nie specjalizuje się w UIKit. Zaimplementowano nową strukturę, specjalnie zaprojektowaną i zoptymalizowaną pod kątem zegarka, jego małego wyświetlacza i ograniczonego sprzętu. Framework składa się tylko z 15 klas, z których 12 to komponenty interfejsu użytkownika (etykieta, przycisk itp.).

Najważniejszą klasą ujawnioną przez framework jest WKInterfaceController , który jest odpowiednikiem UIViewController w UIViewController . Więc to, co w iOS (i OSX) nazywa się kontrolerem widoku , w Apple Watch jest kontrolerem interfejsu .

Bez zbytniego zagłębiania się, najbardziej zauważalnym ulepszeniem w stosunku do UIKit, z punktu widzenia programisty Apple, jest ustanowienie wzorca do przekazywania danych między kontrolerami interfejsów. Szybkie spojrzenie na inicjator:

Swift init(context: AnyObject?) // context from pushing controller or nil

ujawnia, że ​​możliwe jest dostarczenie dowolnego obiektu do instancji kontrolera interfejsu (nazywanego context we wszystkich interfejsach API), upraszczając i standaryzując przekazywanie danych z jednego kontrolera interfejsu do drugiego. Jedyną wadą jest to, że obiekt nie jest typu ogólnego, ale nieprzezroczystym AnyObject , który musi zostać obniżony do oczekiwanego typu wewnątrz inicjatora docelowego kontrolera interfejsu. Jest to prawdopodobnie kompromis, jeśli nadal masz (i prawdopodobnie także chcesz) nadal korzystać z Celu C.

Cykl życia kontrolera interfejsu jest uproszczony w porównaniu z odpowiednikiem kontrolera widoku, składającym się tylko z 3 przejść:

  • init : wywoływany podczas tworzenia instancji obiektu
  • willActivate : wywoływane, gdy zawartość ma zostać wyświetlona
  • didDeactivate : wywoływane, gdy interfejs został właśnie ukryty

Oprócz wyświetlania treści użytkownikowi, kontroler interfejsu odpowiada również za:

  • obsługa interakcji użytkownika
  • zarządzanie menu kontekstowym
  • koordynować działania związane z przekazywaniem
  • odpowiedz na powiadomienie

Czy Apple WatchKit jest gotowy?

Z kilkoma ograniczeniami, zestaw zegarka może wydawać się produktem niedojrzałym. I w rzeczywistości tak jest. Nie obsługuje natywnych aplikacji do zegarków, nie wspominając o tym, że na rynku nie ma jeszcze urządzenia do zegarka, więc programiści nadal nie są w stanie testować swoich aplikacji i mają prawdziwe wyczucie i informacje zwrotne na temat działania aplikacji.

Ok, jest symulator, który w rzeczywistości nie jest niezależnym symulatorem, ale dostępny jako zewnętrzny wyświetlacz dla symulatora iOS (poprzez menu Sprzęt -> Wyświetlacze zewnętrzne). Ale symulator nigdy nie zastępuje prawdziwego urządzenia - dobry podczas programowania i debugowania, ale niewystarczający.

WatchKit to tylko podgląd, wersja beta, przystawka, która będzie ewoluować z każdym nowym wydaniem. Twórcy iOS dostali pierwszą wersję, pobawmy się nią i spróbujmy wycisnąć z niej jak najwięcej.