Apple Watch pe scurt: o introducere a caracteristicilor pentru dezvoltatorii iOS

Publicat: 2022-03-11

A existat multă trepidare în jurul SDK-ului Apple Watch, anunțat la WWDC în iunie anul trecut și lansat recent.

Aceasta este doar prima rundă, cu funcționalități limitate. Apple Watch v2 va urma, dar nu atât de curând - așa că dezvoltatorii iOS cu gândire de viitor ar trebui să fie pregătiți să aștepte câteva luni.

Sentimentul dintre dezvoltatori este extrem de diversificat. Mulți dezvoltatori iOS sunt dezamăgiți de multe limitări impuse de Apple Watch SDK și de caracteristicile sale. Pe de altă parte, mulți dintre noi suntem entuziasmați, în timp ce alții nu sunt prea departe de o poziție neutră. Dar, la urma urmei, toată lumea este aparent fericită că are o jucărie nouă cu care să se joace.

Un lucru care atrage atenția este modul în care sunt referiți utilizatorii Apple Watch. Nu sunt utilizatori sau utilizatori de telefonie mobilă , nici utilizatori de vizionare sau (cu puțină originalitate) observatori . Sunt pur și simplu purtători . Un termen care sună puțin ciudat, pentru că dacă un utilizator folosește , implicând că interacționează, un purtător poartă , și asta sună ca o utilizare pasivă. Desigur, Apple Watch este departe de a fi un dispozitiv pasiv. Combină caracteristicile tradiționale ale unui ceas cu opțiuni mai avansate, activate de tehnologia modernă, mai ales atunci când este utilizat în combinație cu un iPhone. Nu a fost cu mult timp în urmă când telefoanele au început să devină mult mai mult decât telefoane - istoria se repetă.

Cu toate acestea, la sfârșit, numele purtătorului pare a fi o alegere inteligentă. Cel puțin atunci când scriu povești despre utilizatori, nu trebuie să precizez „Ca utilizator de ceas Apple vreau să...” în întregime, pot doar să scurtez asta la „Ca purtător , vreau să...” - mai puțină ambiguitate.

Este posibil ca aplicațiile Apple Watch să schimbe pentru totdeauna modul în care purtătorii de ceasuri (și dezvoltatorii de aplicații iOS) gândesc la tehnologie.

Dispozitiv și interfață de utilizare

Omitând toate funcțiile Apple Watch care nu sunt strict legate de dezvoltare, cea mai importantă problemă cu care trebuie să se confrunte designerii și dezvoltatorii sunt dimensiunile - de fapt există 2 modele diferite de Apple Watch:

  • Ecran de 38 mm cu o rezoluție de 272x340 px
  • Ecran de 42 mm cu o rezoluție de 312x390 px

cu display retină în ambele cazuri.

Inutil să spun că dezvoltatorii iOS se asigură că aplicația arată bine pe ambele versiuni.

Conectivitate Apple Watch

Apple Watch comunică cu iPhone-ul însoțitor prin Bluetooth 4.0 și este, de asemenea, activat NFC. Aparent, nu are conexiune WiFi. Deși poate conecta prin iPhone și poate folosi atât WiFi, cât și conexiunea de date celulare. Dar într-o informație de presă, Apple afirmă clar că are și Wi-Fi 802.11b/g.

Interacțiunea utilizatorului

Interacțiunea utilizatorului (sau interacțiunea purtătorului, dacă se preferă) poate avea loc în 4 moduri diferite:

  • atingere simplă: o atingere pe un buton este un exemplu tipic
  • forțare atingere: se activează prin aplicarea mai multă forță atunci când țineți apăsat ecranul. Similar cu clicul dreapta al mouse-ului pe un PC, va afișa un meniu contextual (conținând până la 4 elemente)
  • gest: glisare verticală pentru a derula, glisare orizontală pentru a naviga între pagini, glisare pe marginea stângă pentru a naviga înapoi
  • coroană digitală: intrare hardware utilizată pentru derularea reglată fin

Există câteva limitări în ceea ce privește interacțiunea utilizatorului, în special în ceea ce privește gesturile:

  • sunt predeterminate, astfel încât gesturile personalizate nu sunt acceptate
  • multi-touch nu este acceptat, așa că nu ciupiți pentru a mări sau gesturi similare care necesită mai mult de un deget

Iată o mostră de meniu contextual din Ghidul Apple WatchKit.

Funcțiile aplicației Apple Watch vor necesita fără îndoială tutoriale extinse de dezvoltare în viitor. Deocamdată, familiarizați-vă cu elementele de bază.

Interfața cu utilizatorul

Vorbind despre interfața de utilizare Apple Watch, există câteva limitări impuse de dimensiunea redusă a ecranului, de alegerile de design și, în multe cazuri, ca o consecință naturală a hardware-ului de bază. Ne așteptăm ca unele dintre ele să se schimbe în bine în viitoarele versiuni ale SDK-ului, deși nu este posibil să anticipăm sau să prognozăm ce se va schimba de fapt.

Prima limitare se referă la modul în care este implementată interfața cu utilizatorul: numai prin intermediul storyboard-urilor.

Navigare Apple Watch

WatchKit oferă două moduri care se exclud reciproc de a naviga printre vizualizările unei aplicații Apple Watch:

  • un model de navigare ierarhic, similar cu cel utilizat în iOS, cu vizualizări stivuite în timpul navigării
  • un model bazat pe pagină plată, în care utilizatorul poate naviga între pagini glisând la stânga și la dreapta

Din păcate, combinarea acestor două modele de navigare în aceeași aplicație nu este posibilă. Unul dintre ele trebuie ales și utilizat în întreaga aplicație.

Cu toate acestea, orice controler de interfață poate prezenta un controler de interfață modal, care poate fi fie un singur controler de interfață, fie controlere de interfață multiple, aranjate folosind un model de navigare în pagină.

Elemente UI

Există 11 componente distincte de interfață:

  • buton
  • glisor
  • imagine
  • eticheta
  • separator
  • glisor
  • intrerupator
  • masa
  • data: afișarea automată a datei sau orei curente
  • temporizator: afișarea unui temporizator cu numărătoare inversă, actualizat automat
  • grup: un container pentru una sau mai multe componente copil
  • hartă: afișarea unei hărți neinteractive, opțional cu max 5 adnotări

Aspecte

Componenta de grup poate fi utilizată pentru a combina elementele UI Apple Watch într-un aspect vertical sau orizontal . Elementele vor fi așezate automat în funcție de dimensiunea lor. Un anumit grad de flexibilitate este disponibil aici, având în vedere că grupurile pot fi imbricate.

Din păcate, aspectul automat nu este disponibil. Dar, având în vedere că interfața cu utilizatorul este mult mai simplă în comparație cu omologul iOS, probabil că nu este o mare pierdere.

Pentru liste, componenta tabel creează și gestionează conținut folosind un singur model de coloană, la fel ca UITableView . Cu toate acestea, nu utilizează modelul de delegare - sursa de date este furnizată direct tabelului prin specificarea mai întâi a numărului de rânduri și apoi inițialând conținutul fiecărui rând într-o buclă for. Într-o notă pozitivă, este încă posibil să folosiți rânduri personalizate de tabel (adică celule în jargonul iOS)

Privirile

Privirile sunt vizualizări numai pentru citire, pe o singură pagină și care nu pot fi derulate, utilizate pentru a afișa un instantaneu al datelor oportune și relevante specifice aplicației. Nu este permisă nicio interacțiune cu utilizatorul, cu excepția evenimentului de atingere. Atingeți privirea va lansa pur și simplu aplicația, oferind opțional un context pentru a permite aplicației să afișeze un controler de interfață specific.

De exemplu, o aplicație meteo Apple Watch poate folosi Glance pentru a afișa temperatura curentă, locația etc. Atingând-o, aplicația se deschide, afișând informații mai detaliate.

Iată exemplul de privire din Ghidul oficial Apple WatchKit.

Acesta este un exemplu al funcției de privire Apple Watch într-un exemplu de aplicație Apple Watch.

Notificări Apple Watch

Există 2 tipuri de notificări: aspect scurt și aspect lung .

Notificarea de scurtă privire este folosită pentru a avertiza purtătorul că s-a întâmplat ceva și este eliminată automat când încheietura mâinii este coborâtă. Aspectul este foarte simplu și constă din pictograma aplicației, numele aplicației și titlul notificării.

Iată cum ar putea arăta o notificare Apple Watch într-o aplicație.

Menținerea încheieturii mâinii ridicate pentru o perioadă de timp sau atingerea explicită a notificării de privire scurtă o va transforma într-o notificare de privire lungă . Acest tip de notificări oferă mai multe detalii și acceptă interacțiunea utilizatorului prin butoane personalizabile. Aceste butoane pot trimite notificări către aplicație. Spre deosebire de notificarea scurtă, utilizatorul trebuie să respingă în mod explicit o notificare lungă prin atingerea unui buton care este afișat automat în partea de jos a vizualizării.

Notificarea cu aspect lung este una dintre caracteristicile distincte despre Apple Watch pe care dezvoltatorii ar trebui să le cunoască.

Mai multe informații despre utilizarea notificărilor Apple Watch pot fi găsite aici.

Dezvoltare

Arhitectură

Descărcând o versiune Xcode care acceptă WatchKit (în prezent, versiunea beta 6.2) și încercând să începeți cu un proiect WatchKit fără a citi documentația, un dezvoltator s-ar putea simți confuz deoarece nu există un șablon WatchKit:

Aplicațiile Apple Watch pot fi adăugate doar ca țintă nouă la una dintre aplicațiile iOS existente.

Nu există nicio aplicație de ceas de sine stătătoare și o aplicație Watch poate fi adăugată doar ca țintă nouă la o aplicație iOS existentă.

Pentru a dezvolta o aplicație Apple Watch, începeți cu aplicația iOS actuală și adăugați aplicația Watch ca țintă nouă.

Motivul se bazează pe arhitectură și pe modul în care aplicația ceas interacționează cu aplicația iOS aferentă:

Înțelegerea modului în care un Apple Watch interacționează cu alte aplicații iOS de pe iPhone este esențială pentru a fi un dezvoltator de succes Apple Watch.

Când aplicația este lansată pe ceas, extensia iOS însoțitoare este lansată automat. Ambele lucrează în sinergie, aplicația ceas afișând conținutul purtătorului și răspunde la interacțiuni, în timp ce extensia iOS face orice altceva. De fapt, niciun cod de aplicație nu este executat pe ceas: toată procesarea este delegată extensiei iOS.

Acest model seamănă îndeaproape cu modelul aplicației web browser <->, în care logica domeniului este realizată la nivelul serverului, iar partea client este responsabilă pentru afișarea conținutului utilizatorului și răspunsul la acțiunile utilizatorului.

Aplicația Watch, care este instalată pe dispozitiv, constă din storyboard și toate resursele statice aferente, ambalate într-un pachet. Acest pachet este static, ceea ce înseamnă că adăugarea sau modificarea oricărei resurse, vizualizări, imagini etc. nu este posibilă în timpul execuției.

Acest model static client-server impune mai multe limitări dezvoltatorului iOS care dorește să adauge o aplicație Watch în repertoriul lor și este probabil unul dintre motivele principale pentru care unii dezvoltatori nu au reacționat pozitiv. O altă remarcă populară este despre animații: pur și simplu nu sunt acceptate. Singura modalitate de a imita o animație este prin împachetarea cadrelor individuale în aplicația de ceas și apoi simularea animației prin afișarea imaginilor într-o secvență. Vestea bună este că prin denumirea secvențială a cadrelor puteți automatiza animația direct din Interface Builder, deși același lucru se poate face din cod cu o singură invocare a unei metode de control a imaginii.

Cu toate acestea, Apple a anunțat deja că o nouă versiune va fi lansată uneori anul viitor, cu suport pentru aplicații native, pentru care nu există încă detalii suplimentare.

Cadrul Apple Watch: O privire rapidă

WatchKit nu folosește, moștenește sau specializează UIKit. A fost implementat un nou cadru, special conceput și optimizat pentru ceas, pentru afișajul său minuscul și pentru hardware-ul limitat. Cadrul constă numai din 15 clase, dintre care 12 sunt componente ale UI (etichetă, buton etc.).

Cea mai importantă clasă expusă de cadru este WKInterfaceController , care este omologul WatchKit al UIViewController . Deci, ceea ce în iOS (și OSX) se numește controler de vizualizare , în Apple Watch este un controler de interfață .

Fără să sapi prea adânc, cea mai vizibilă îmbunătățire față de UIKit, din perspectiva unui dezvoltator Apple, este stabilirea unui model de transmitere a datelor între controlerele de interfață. O privire rapidă asupra inițializatorului:

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

dezvăluie că este posibil să se furnizeze un obiect arbitrar unei instanțe de controler de interfață (numit context în toate API-urile), simplificând și standardizând transmiterea datelor de la un controler de interfață la altul. Singurul dezavantaj este că obiectul nu este de tip generic, ci un AnyObject opac care trebuie să fie redus la tipul așteptat în interiorul inițializatorului controlerului de interfață de destinație. Acesta este probabil un compromis pentru a avea în continuare (și probabil și a dori) să folosești în continuare Obiectivul C.

Ciclul de viață al controlerului de interfață este simplificat în comparație cu omologul controler de vizualizare, constând doar din 3 tranziții:

  • init : invocat atunci când obiectul este instanțiat
  • willActivate : invocat atunci când conținutul este pe cale să fie afișat
  • didDeactivate : invocat atunci când interfața tocmai a fost ascunsă

Pe lângă afișarea conținutului utilizatorului, controlerul de interfață este responsabil și pentru:

  • gestionarea interacțiunilor utilizatorului
  • gestionarea unui meniu contextual
  • coordonează activitatea de transfer
  • răspunde la notificare

Este Apple WatchKit gata?

Cu numeroasele limitări, setul de ceas poate apărea ca un produs imatur. Și în realitate este. Nu acceptă aplicații native de ceas, ca să nu mai menționăm că nu există încă niciun dispozitiv de ceas pe piață, așa că dezvoltatorii încă nu pot să-și testeze aplicațiile și să aibă un sentiment real și un feedback despre modul în care funcționează aplicația.

Ok, există un simulator, care de fapt nu este un simulator independent, ci accesibil ca afișaj extern pentru simulatorul iOS (prin meniul Hardware -> Afișări externe). Dar un simulator nu înlocuiește niciodată un dispozitiv real - bun în timpul dezvoltării și pentru depanare, dar nu suficient.

WatchKit este doar o previzualizare, o versiune beta, un aperitiv, care va evolua cu fiecare nouă lansare. Dezvoltatorii iOS au prima versiune, hai să ne jucăm cu ea și să încercăm să profităm la maximum de ea.