Compatibile con Xcode 8

3D Touch e Quick Actions con il linguaggio Swift

ENTRA NEL NOSTRO GRUPPO FACEBOOK

Con l’iPhone 6S, e di conseguenza con iOS 9 e successivi, Apple ha introdotto una nuova tecnologia chiamata 3D Touch, che utilizza un sensore presente sul vetro del tuo telefono per rilevare la pressione del dito sul display.

Il 3D Touch si discosta completamente dalle gesture precedenti, in quanto, non si tratta di una normale pressione (cioè un click o click continuo sullo schermo) bensì di un click dove l’utente deve aumentare la pressione contro lo schermo per poter attivare il sensore del 3D Touch.

Esistono due particolari applicazioni di questa nuova funzionalità presente solo negli iPhone 6S/6S Plus in su.

  • Le Quick Actions, cioè dei menu che compaiono attivando il 3D Touch sull’icona dell’applicazione. Grazie a questi menu sarai in grado di accedere velocemente a sezioni della tua applicazione.
  • Preview o 3D Touch in app, dove grazie a questa tecnologia puoi visualizzare un componente dell’applicazione senza entrarci realmente. Per esempio, puoi visualizzare il ViewController di destinazione di un segue senza realmente attivarlo. Oppure, aprire e visualizzare un’email in anteprima direttamente dalla lista delle email ricevute.

3D Touch e Quick Actions con il linguaggio Swift

In questo tutorial, voglio parlarti del 3D Touch e Quick Actions con il linguaggio Swift. Per seguire questo tutorial è necessario che tu sappia già creare applicazioni. A tal proposito ti consiglio i due corsi di sviluppo app e se vuoi cominciare bene, segui questi consigli.

Come creare una Quick Actions con Swift

Per creare una Quick Action ti basta modificare il file info.plist della tua App. Tieni a mente che è possibile creare al massimo quattro Quick Actions!

Inizia ad aprire il file Info.plist, ed aggiungi una chiave alla lista premendo il tasto + vicino a Information Property List:

Aggiunta Quick Actions

Modifica il nome del nuovo elemento in UIApplicationShortcutItems e cambia il tipo in Array. Successivamente aggiungi un elemento per ogni Quick Action che vuoi creare (ricorda, creane al massimo quattro!) e cambia il tipo in Dictionary.

Infine, per ogni elemento che hai creato, devi aggiungere questi due campi (di tipo String), indispensabili per il corretto funzionamento:

  1. UIApplicationShortcutItemType: una stringa che identifica univocamente le Quick Actions, solitamente si scrive nel seguente formato: com.Organization-Identifier.Quick-Action-name. Io ad esempio ho usato questa sintassi: com.sbeff.aggiungiUtente;
  2. UIApplicationShortcutItemTitle: una stringa che rappresenta il titolo visibile all’utente al momento della pressione sull’icona dell’App.

Oltre a questi due campi puoi aggiungerne altri quattro tutti facoltativi:

  1. UIApplicationShortcutItemSubtitle: come avrai intuito dal nome, è il sottotitolo che verrà inserito sotto il titolo della Quick Action;
  2. UIApplicationShortcutItemIconType: una stringa per impostare una delle icone predefinite che la Apple mette a disposizione, puoi trovare la lista completa a questo indirizzo
  3. UIApplicationShortcutItemIconFile: una stringa da usare nel caso in cui voglia impostare un’icona personalizzata (in questo tutorial non la userai);
  4. UIApplicationShortcutItemUserInfo: un dizionario per memorizzare dei dati (in questo tutorial non lo userai).

Info.plist finale

Bene, adesso sbizzarrisciti pure e crea tutte le Quick Actions che ti vengono in mente e avvia la tua App!

Ovviamente per testarle avrai bisogno di un dispositivo con il 3D Touch (iPhone 6S, 6S Plus e succ). Nota bene: se provi l’app sul simulatore ti potrai domandare come simulare la pressione del 3D Touch. La risposta è semplice: non è possibile attivarlo sull’iOS Simulator a meno che tu non disponga di un Mac con il Force Touch: in quel caso premendo la combinazione di tasti shift-cmd-3 potrai simulare il 3D Touch premendo con forza sul Trackpad.

Gestire le Quick Actions con Swift

Finalmente è arrivato il momento di scrivere un po’ di codice!

Per gestire le chiamate delle Quick Actions, ti basta aggiungere un metodo nel file AppDelegate.swift, che verrà richiamato ogniqualvolta l’utente le utilizzerà. Il metodo in questione si chiama performActionFor ShortcutItem:

Per capire quale delle tante Quick Actions è stata chiamata è necessario controllare il parametro shortcutItem e più precisamente l’attributo type. Puoi gestire i vari stati con un if-else o con un’istruzione switch (se non te le ricordi, guarda il corso gratuito sul linguaggio swift):

Per rendere l’app un po’ più completa, mostra un’alert ogni volta che viene richiamato il metodo. Nel caso in cui non dovessi capire al 100% il codice che segue, dà un’occhiata al tutorial di Peppe.

All’interno dell’if, aggiungi il seguente codice per far capire un Alert View alla pressione di una Quick Actions:

Il DispatchQueue.main.async manda in esecuzione il codice al suo interno in un thread sulla main queue ovvero sul thread che gestisce l’interfaccia grafica dell’applicazione.

Questo è necessario in quanto, il codice che stai scrivendo, si trova all’interno dell’AppDelegate che non è un oggetto grafico bensì un gestore dell’applicazione. Il metodo present, infine, mostrerà l’alert dato che verrà invocato nel rootViewController dell’applicazione (ovvero il VC che è stato assegnato come “Is Initial View Controller”).

Avvia l’App. Noterai che per ogni Quick Action selezionata verrà mostrata un’Alert con il titolo corrispondente alla Action scelta.

Considerazioni

Hai ufficialmente finito questo tutorial! Se qualsiasi qualcosa non dovesse esserti chiara, fammelo sapere nei commenti oppure sul nostro gruppo Facebook o Slack.

 

Buona programmazione!

Changelog

  •  20/01/2017 – Aggiunto il changelog. Tutorial aggiornato ad Xcode 8 e linguaggio Swift 3.

Start typing and press Enter to search