Compatibile con Xcode 8

Introduzione alle notifiche Push Locali in iOS con Swift

ENTRA NEL NOSTRO GRUPPO FACEBOOK

Quando un’applicazione con le notifiche invasive incontra un’app con le notifiche non invasive, l’applicazione invasiva è un’app morta!

Quante volte ti è capitato di disinstallare un’applicazione perché inviava notifiche ad ogni battito di ciglio? Dato che sarai tu, lo sviluppatore iOS del futuro, ti invito a riflettere sulla celeberrima frase di Clint Eastwood (già a quei tempi gli iphone andavano di moda).

Ma cos’è una notifica?

La notifica è una forma di comunicazione. Essendo tale, sai che, se non si rispettano certi vincoli, da semplice comunicazione può passare a rissa o alla rimozione dell’App o, addirittura, al martellamento dell’iPhone. Le notifiche, che creerai in iOS con il linguaggio Swift, servono a mandare piccole informazioni all’utilizzatore di una tua applicazione.

Immagina di aver litigato con il tuo partner. Se gli invii un messaggio chiedendogli di uscire, lei o lui, come pensi che reagirebbe?

Esattamente. Devi pensare al rapporto tra utente e applicazione come ad una relazione amorosa. Basta una semplice scintilla per mandare in fumo tutto un’intero lavoro di corteggiamento.

Infatti, vedrai, che per poter inviare delle notifiche ad un utente, quest’ultimo, deve dare il consenso a tale operazione. Quindi hai una ed una sola chance per instaurare questo magico rapporto. Pensala come all’asso della manica che ti giochi con la ragazza/o più bella che hai mai conosciuto. Hai un solo tentativo e non puoi assolutamente sbagliare.

Fatta questa premessa, ti dico subito che esistono due sistemi per inviare le notifiche:

  1. Da un server, tipo Parse.
  2. Dalla stessa applicazione, ovvero in locale.

In questo tutorial ti farò analizzare il punto due. Ovvero, come creare un sistema di notifiche Push Locali in iOS con Swift.

Sei pronto? Allora cominciamo!

3 Regole da rispettare

Porsi delle domande è fondamentale. La prima che dovrebbe passarti per la testa è la seguente: perché devo creare un sistema di notifiche Push Locali in iOS con Swift per la mia applicazione?

Non rispondere adesso, prima voglio che tu sappia che quasi il 50% delle persone disabilita le notifiche push perché le considera troppo invasive. Sei fra queste vero? La percentuale cala intorno al 30% quando le applicazioni in questione riguardano il social.

Quindi, se non vuoi che la tua applicazione rientri in quel 50%, le regole che io ti suggerisco di seguire sono 3. Ti sembreranno considerazioni stupide, ma, se un utente non accetta le notifiche Push nella propria app iOS, un motivo ci sarà.

Screen-Shot-2014-08-03-at-9.55.13-PM1. Dai una buona impressione

Non chiedere al primo avvio dell’applicazione l’autorizzazione per l’invio di notifiche, quasi sicuramente l’utente tenderà a mettere NO.

Prova a inserire lo sblocco dell’autorizzazione dopo una bella introduzione al funzionamento dell’applicazione. In questo modo l’utilizzatore capirà il valore, l’utilità dell’applicazione e tenderà ad accettare le notifiche push.

In più prova a spiegare perché, quando e come le tue notifiche verranno inviate.
Questo è un approccio educato e non invasivo, anche se l’utente non accetterà le notifiche avrai comunque fatto una buona impressione.

2. Domanda con cortesia

come e quando inviare notifiche push con swift

Due sono le possibilità, o l’utente preme “Ok autorizza le notifiche” oppure “Non autorizzare”.

  • Nel primo caso ti invito a mandare l’utente in una pagina dove poter settare il come e quando l’applicazione invierà le notifiche.
  • Il secondo caso è quello da trattare con più cura infatti ti trovi contro un utente restio alle notifiche. In questa situazione puoi chiedere l’attivazione delle notifiche solo se strettamente necessario, ad esempio:

Immagina un’app di messaggistica. Il tuo utente invia un messaggio a Caio. In questo caso entra in gioco la cortesia, qui l’applicazione chiederà: Vuoi che ti venga mandata una notifica quando Caio riceve il messaggio?

Beccato, hai un nuovo utente iscritto alle notifiche!

In questo modo invogli l’utente ad accettare. In pratica, aspetta che l’utente abbia familiarizzato con l’applicazione infatti l’utilizzatore di un’applicazione è una persona tale e quale a te! 

Tu accetteresti una caramella da uno sconosciuto?

3. Buoni rapporti con l’utente

Se sei tra i fortunati ad avere un buon numero di utilizzatori, con notifiche abilitate, allora sei a buon punto. Ti manca solo di non rovinare il buon connubio tra app e utente.

In questi casi ti consiglio di inviare notifiche ad hoc, ovvero in linea con quanto si aspetta il consumatore. La tua applicazione parla di eventi sportivi? Allora invia notifiche solo per gli eventi che l’utente dell’applicazione segue e non per tutti gli eventi dell’applicazione. Cioè, crea un sistema per cui l’utilizzatore può scegliere quando ricevere le proprie notifiche e su quali argomenti vuole essere informato.

Fatta questa necessaria premessa è ora di passare all’atto pratico.

Notifiche Push Locali in iOS con Swift

Per cominciare, crea un nuovo progetto. Apri Xcode, vai su File\New\Project…, seleziona iOS, Single View Application e fai Next. Dai un nome al progetto, seleziona Swift come linguaggio di programmazione e come device imposta iPhone.

Non ti ricordi come si fa? ti consiglio di partire dal seguente tutorial: La prima applicazione iOS con il linguaggio Swift. Se invece vuoi seguire un percorso più completo e che ti porti a creare le tue applicazioni in modo autonomo, segui i miei due corsi:

Richiedere il permesso

Adesso è arrivato il momento di chiedere l’autorizzazione all’invio delle notifiche locali. Apri il ViewController.swift e nel metodo ViewDidLoad() aggiungi le seguenti righe di codice:

La UIUserNotificationSettings è la classe relativa alla gestione delle notifiche della tua applicazione. Un oggetto definisce il tipo di notifiche che la tua app sarà predisposta ad utilizzare. Nel campo forTypes, infatti, ti ho fatto inserire un array di UIUserNotificationTypes ovvero quali tipi di notifiche l’applicazione potrà gestire (AlertView, Badge e suoni). Le categories servono a creare sistemi più complessi di notifiche e che noi non utilizzeremo in questo tutorial.

Infine, l’oggetto settings viene passato alla sharedApplication che provvederà, tramite il metodo registerUserNotificationSettings, a richiedere l’autorizzazione all’utilizzo delle notifiche specificate nell’oggetto UIUserNotificationSettings.

Ricordati hai una sola change! Se fallisce l’utente deve attivare manualmente le notifiche dalle impostazioni. Avvia l’applicazione e accetta i permessi per l’invio di notifiche push.

Programmare una notifica

Le notifiche si programmano. Ovvero, dato un particolare evento generato dall’utente si sceglie un intervallo di tempo in cui inviare la notifica. Nel tuo progetto, aggiungi la seguente funzione:

Il metodo, comincia recuperando le impostazioni dell’utente riguardo le notifiche per la seguente applicazione. Poi esegue un if sul tipo di notifiche abilitate. Se il types è .None, cioè l’utente non ha abilitato le notifiche, allora l’applicazione crea una AlertView (una finestra d’avviso) e comunica all’utilizzatore che non ha attivato le notifiche locali.

Se l’utente ha abilitato le notifiche, allora viene creato un oggetto di tipo UILocalNotification. A questo viene assegnata un’azione

  • alertAction: è il messaggio che comparirà nel bottone della notifica in modalità Alert View.
  • alertBody: il testo o spiegazione della notifica.
  • soundName: il tipo di suono che deve emettere l’applicazione. In questo caso usiamo il suono standard scelto dall’utente.
  • fireDate: rappresenta la data in cui inviare la notifica. In questo caso, con il timeIntervalSinceNow, calcoliamo la data a 10 secondi dall’invocazione del metodo.

Infine, lo scheduleLocalNotification mette in coda la notifica. Se non ci sono altre notifiche da inviare allora la manda, se no aspetta che le altre siano state spedite.

Inserisci una chiamata alla funzione nel metodo ViewDidLoad:

Avvia l’applicazione, vai in home premendo cmd+shift+H e aspetta 10 secondi:

Notifiche push con Swift

DiarioScolastico è l’app con cui stavo facendo il test delle notifiche push. Il messaggio sotto il nome dell’app è quello inserito nella proprietà alertBody.

Considerazioni

Ti ho fatto vedere una piccola parte del mondo delle notifiche Push Locali in iOS con Swift. Dato che l’utilizzatore medio tende a disattivare subito le notifiche, ho preferito soffermarmi sull’aspetto di progettazione. Anche perché, senza quello, è inutile spiegarti il resto.

Comunque se dovessi avere problemi di qualsiasi genere, scrivi un commento.

Buona Programmazione!

Start typing and press Enter to search

Tutorial Core Data, creare e gestire relazioni tra EntityCreare un'app con TableView per WatchOS