Apple Watch in breve: un'introduzione alle funzionalità per gli sviluppatori iOS

Pubblicato: 2022-03-11

C'è stata molta trepidazione attorno all'Apple Watch SDK, annunciato al WWDC lo scorso giugno e rilasciato di recente.

Questo è solo il primo round, con funzionalità limitate. Apple Watch v2 seguirà, ma non così presto, quindi gli sviluppatori iOS lungimiranti dovrebbero essere preparati ad aspettare qualche mese.

Il sentimento tra gli sviluppatori è estremamente diversificato. Molti sviluppatori iOS sono delusi dalle molte limitazioni imposte da Apple Watch SDK e dalle sue funzionalità. D'altra parte, molti di noi sono eccitati, mentre altri non sono troppo lontani da una posizione neutrale. Ma, dopo tutto, tutti sono apparentemente felici di avere un nuovo giocattolo con cui giocare.

Una cosa che cattura l'attenzione è il modo in cui vengono chiamati gli utenti di Apple Watch. Non sono utenti o utenti mobili , né utenti di orologi o (con un pizzico di originalità) osservatori . Sono semplicemente indossatori . Un termine che suona un po' strano, perché se un utente usa , implicando che interagisce, chi lo indossa indossa e suona come un uso passivo. Ovviamente, l'Apple Watch è ben lungi dall'essere un dispositivo passivo. Combina le caratteristiche tradizionali di un orologio con opzioni più avanzate abilitate dalla tecnologia moderna, soprattutto se utilizzato in combinazione con un iPhone. Non è passato molto tempo da quando i telefoni hanno iniziato a diventare molto più che semplici telefoni: la storia si sta ripetendo.

Tuttavia, alla fine il nome di chi lo indossa sembra essere una scelta intelligente. Almeno quando scrivo le storie degli utenti non devo specificare "Come utente di Apple Watch voglio ..." per intero, posso semplicemente abbreviarlo in "Come indossatore , voglio ..." - meno ambiguità.

È probabile che le app di Apple Watch cambieranno per sempre il modo in cui i portatori di orologi (e gli sviluppatori di app iOS) pensano alla tecnologia.

Dispositivo e interfaccia utente

Tralasciando tutte le funzionalità di Apple Watch non strettamente correlate allo sviluppo, i problemi più importanti che i progettisti e gli sviluppatori devono affrontare sono le dimensioni, infatti esistono 2 diversi modelli di Apple Watch:

  • Schermo da 38 mm con una risoluzione di 272x340 px
  • Schermo da 42 mm con una risoluzione di 312x390 px

con display retina in entrambi i casi.

Inutile dire che spetta agli sviluppatori iOS garantire che l'applicazione abbia un bell'aspetto su entrambe le versioni.

Connettività dell'Apple Watch

L'Apple Watch comunica con il compagno iPhone tramite Bluetooth 4.0 ed è anche abilitato NFC. Apparentemente, non ha connettività Wi-Fi. Sebbene possa collegarsi tramite l'iPhone e utilizzare sia la connessione dati Wi-Fi che cellulare. Ma in un comunicato stampa Apple afferma chiaramente che dispone anche di Wi-Fi 802.11b/g.

Interazione utente

L'interazione dell'utente (o l'interazione di chi lo indossa, se si preferisce) può avvenire in 4 modi diversi:

  • semplice tocco: il tocco su un pulsante è un tipico esempio
  • tocco forzato: attivato applicando più forza quando si tocca e si tiene premuto lo schermo. Simile al clic destro del mouse su un PC, verrà visualizzato un menu contestuale (contenente fino a 4 elementi)
  • gesto: scorri in verticale per scorrere, scorri in orizzontale per navigare tra le pagine, scorri sul bordo sinistro per tornare indietro
  • corona digitale: ingresso hardware utilizzato per lo scorrimento ottimizzato

Ci sono alcune limitazioni riguardanti l'interazione dell'utente, in particolare sui gesti:

  • sono predeterminati, quindi i gesti personalizzati non sono supportati
  • il multi touch non è supportato, quindi non pizzicare per ingrandire o gesti simili che richiedono più di un dito

Ecco un esempio di menu contestuale dalla guida di Apple WatchKit.

Le funzionalità dell'app Apple Watch richiederanno innegabilmente tutorial di sviluppo approfonditi in futuro. Per ora, familiarizza con le basi.

Interfaccia utente

Parlando dell'interfaccia utente di Apple Watch, ci sono diverse limitazioni imposte dalle dimensioni ridotte dello schermo, dalle scelte di design e in molti casi come conseguenza naturale dell'hardware sottostante. Prevediamo che alcuni di essi cambieranno in meglio nelle versioni future dell'SDK, sebbene non sia possibile anticipare né prevedere cosa cambierà effettivamente.

La prima limitazione riguarda il modo in cui viene implementata l'interfaccia utente: solo tramite storyboard.

Navigazione dell'Apple Watch

WatchKit offre due modi che si escludono a vicenda per navigare tra le visualizzazioni di un'app Apple Watch:

  • un modello di navigazione gerarchico, simile a quello utilizzato in iOS, con viste impilate durante la navigazione
  • un modello basato su una pagina piatta, in cui l'utente può navigare tra le pagine scorrendo verso sinistra e verso destra

Sfortunatamente, non è possibile combinare questi due modelli di navigazione nella stessa app. Uno di questi deve essere scelto e utilizzato in tutta l'app.

Tuttavia, qualsiasi controller di interfaccia può presentare un controller di interfaccia modale, che può essere un controller di interfaccia singolo o più controller di interfaccia, organizzati utilizzando un modello di navigazione della pagina.

Elementi dell'interfaccia utente

Ci sono 11 distinti componenti dell'interfaccia:

  • pulsante
  • cursore
  • Immagine
  • etichetta
  • separatore
  • cursore
  • interruttore
  • tavolo
  • data: visualizzazione automatica della data o dell'ora correnti
  • timer: visualizzazione di un timer per il conto alla rovescia, aggiornato automaticamente
  • gruppo: un contenitore per uno o più componenti figlio
  • mappa: visualizzazione di una mappa non interattiva, opzionalmente con max 5 annotazioni

Layout

Il componente gruppo può essere utilizzato per combinare elementi dell'interfaccia utente di Apple Watch in un layout verticale o orizzontale . Gli elementi verranno disposti automaticamente in base alle loro dimensioni. Qui è disponibile un certo grado di flessibilità, dato che i gruppi possono essere nidificati.

Sfortunatamente, il layout automatico non è disponibile. Ma, considerando che l'interfaccia utente è molto più semplice rispetto alla controparte iOS, probabilmente non è una grande perdita.

Per gli elenchi, il componente tabella crea e gestisce il contenuto utilizzando un modello a colonna singola, proprio come UITableView . Tuttavia, non utilizza il modello di delega: l'origine dati viene fornita direttamente alla tabella specificando prima il numero di righe e quindi inizializzando il contenuto di ciascuna riga in un ciclo for. Una nota positiva, è ancora possibile utilizzare righe di tabella personalizzate (ovvero celle nel gergo iOS)

Sguardi

Gli sguardi sono visualizzazioni di sola lettura, a pagina singola e non scorrevoli, utilizzate per mostrare un'istantanea di dati specifici dell'app tempestivi e pertinenti. Non è consentita alcuna interazione dell'utente, ad eccezione dell'evento tap. Tocca lo sguardo per avviare semplicemente l'app, fornendo opzionalmente un contesto per consentire all'app di visualizzare un controller di interfaccia specifico.

Ad esempio, un'app meteo di Apple Watch può utilizzare Glance per visualizzare la temperatura attuale, la posizione ecc. Toccandola, l'app si apre, mostrando informazioni più dettagliate.

Ecco un esempio di Glance dalla guida ufficiale di Apple WatchKit.

Questo è un esempio della funzione sguardo di Apple Watch in un'app Apple Watch di esempio.

Notifiche di Apple Watch

Esistono 2 tipi di notifica: look corto e aspetto lungo .

La notifica dello sguardo breve viene utilizzata per avvisare chi la indossa che è successo qualcosa e viene automaticamente respinta quando il polso viene abbassato. Il layout è molto semplice e consiste nell'icona dell'app, nel nome dell'app e nel titolo della notifica.

Ecco come potrebbe apparire una notifica di Apple Watch all'interno di un'app.

Tenendo il polso sollevato per un po' di tempo o toccando esplicitamente la notifica dello sguardo breve, si trasformerà in una notifica dello sguardo lungo . Questo tipo di notifiche fornisce maggiori dettagli e supporta l'interazione dell'utente tramite pulsanti personalizzabili. Questi pulsanti possono inviare notifiche all'applicazione. A differenza della notifica breve, l'utente deve ignorare esplicitamente una notifica di aspetto lungo toccando un pulsante che viene visualizzato automaticamente nella parte inferiore della vista.

La notifica di aspetto lungo è una delle caratteristiche distintive di Apple Watch che gli sviluppatori dovrebbero conoscere.

Ulteriori informazioni sull'utilizzo delle notifiche di Apple Watch sono disponibili qui.

Sviluppo

Architettura

Scaricando una versione Xcode che supporta WatchKit (attualmente la versione beta 6.2) e provando a iniziare con un progetto WatchKit senza leggere alcuna documentazione, uno sviluppatore potrebbe sentirsi confuso perché non esiste un modello WatchKit:

Le app di Apple Watch possono essere aggiunte solo come nuovo target a una delle tue applicazioni iOS esistenti.

Non esiste un'applicazione orologio autonoma e un'app orologio può essere aggiunta solo come nuova destinazione a un'applicazione iOS esistente.

Per sviluppare un'app Apple Watch, inizia con l'app iOS corrente e aggiungi l'app Watch come nuovo target.

Il motivo risiede nell'architettura e nel modo in cui l'app dell'orologio interagisce con l'app iOS correlata:

Comprendere il modo in cui un Apple Watch interagisce con altre app iOS su iPhone è fondamentale per essere uno sviluppatore di Apple Watch di successo.

Quando l'app viene avviata sull'orologio, l'estensione iOS complementare viene avviata automaticamente. Entrambi funzionano in sinergia, con l'app Watch che mostra i contenuti a chi li indossa e risponde alle interazioni, mentre l'estensione iOS fa tutto il resto. In realtà, nessun codice applicativo viene eseguito sull'orologio: tutta l'elaborazione è delegata all'estensione iOS.

Questo modello assomiglia molto al modello dell'applicazione Web browser <->, in cui la logica del dominio viene eseguita sul lato server e il lato client è responsabile della visualizzazione del contenuto all'utente e della risposta alle azioni dell'utente.

L'app Watch, installata sul dispositivo, è composta dallo storyboard e da tutte le relative risorse statiche, racchiuse in un pacchetto. Questo pacchetto è statico, il che significa che l'aggiunta o la modifica di risorse, viste, immagini ecc. non è possibile in fase di esecuzione.

Questo modello statico client-server impone diverse limitazioni allo sviluppatore iOS che desidera aggiungere un'app Watch al proprio repertorio ed è probabilmente uno dei motivi principali per cui alcuni sviluppatori non hanno reagito positivamente. Un'altra osservazione popolare riguarda le animazioni: semplicemente non sono supportate. L'unico modo per imitare un'animazione è comprimere singoli fotogrammi nell'app Watch e quindi simulare l'animazione visualizzando le immagini in sequenza. Una buona notizia è che nominando i frame in sequenza è possibile automatizzare l'animazione direttamente da Interface Builder, sebbene lo stesso possa essere fatto dal codice con una singola chiamata di un metodo di controllo dell'immagine.

Tuttavia Apple ha già annunciato che una nuova versione verrà rilasciata a volte il prossimo anno, con supporto per applicazioni native, per le quali non ci sono ancora ulteriori dettagli.

L'Apple Watch Framework: una rapida occhiata

WatchKit non usa, eredita o specializza UIKit. È stato implementato un nuovo framework, appositamente progettato e ottimizzato per l'orologio, per il suo minuscolo display e per l'hardware limitato. Il framework è composto da sole 15 classi, 12 delle quali sono componenti dell'interfaccia utente (etichetta, pulsante, ecc.).

La classe più importante esposta dal framework è WKInterfaceController , che è la controparte WatchKit di UIViewController . Quindi quello che in iOS (e OSX) viene chiamato controller di visualizzazione , in Apple Watch è un controller di interfaccia .

Senza scavare troppo in profondità, il miglioramento più evidente rispetto a UIKit, dal punto di vista di uno sviluppatore Apple, è la creazione di un modello per trasferire i dati tra i controller di interfaccia. Una rapida occhiata all'inizializzatore:

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

rivela che è possibile fornire un oggetto arbitrario a un'istanza del controller di interfaccia (chiamata context in tutte le API), semplificando e standardizzando il passaggio dei dati da un controller di interfaccia a un altro. L'unico aspetto negativo è che l'oggetto non è di un tipo generico, ma un AnyObject opaco che deve essere downcast al tipo previsto all'interno dell'inizializzatore del controller dell'interfaccia di destinazione. Questo è probabilmente un compromesso per avere ancora (e probabilmente anche volere) continuare a usare l'obiettivo C.

Il ciclo di vita del controller di interfaccia è semplificato rispetto alla controparte del controller di visualizzazione, costituito da sole 3 transizioni:

  • init : invocato quando l'oggetto viene istanziato
  • willActivate : invocato quando il contenuto sta per essere visualizzato
  • didDeactivate : invocato quando l'interfaccia è stata appena nascosta

Oltre a mostrare i contenuti all'utente, il controller dell'interfaccia è anche responsabile di:

  • gestione delle interazioni dell'utente
  • gestione di un menu contestuale
  • coordinare l'attività di trasferimento
  • rispondere alla notifica

Apple WatchKit è pronto?

Con le numerose limitazioni, il kit orologio potrebbe apparire come un prodotto immaturo. E in realtà lo è. Non supporta le applicazioni di visualizzazione native, per non parlare del fatto che non esiste ancora un dispositivo di visualizzazione sul mercato, quindi gli sviluppatori non sono ancora in grado di testare le loro app e hanno una sensazione e un feedback reali su come funziona l'app.

Ok, c'è un simulatore, che in realtà non è un simulatore indipendente, ma accessibile come display esterno al simulatore iOS (tramite il menu Hardware -> Display esterni). Ma un simulatore non sostituisce mai un dispositivo reale: buono durante lo sviluppo e per il debug, ma non abbastanza.

Il WatchKit è solo un'anteprima, una versione beta, un antipasto, che si evolverà con ogni nuova versione. Gli sviluppatori iOS hanno la prima versione, giochiamoci e cerchiamo di trarne il massimo.