Compatibile con Xcode 8

MessageUI, inviare Email e Messaggi con il linguaggio Swift

ENTRA NEL NOSTRO GRUPPO FACEBOOK

Condivisione! il motivo che dovrebbe spingerti ad implementare un sistema che permetta di inviare email e messaggi con il linguaggio Swift per la tua applicazione iOS.

Sembra una considerazione banale ma, facci caso, la maggior parte delle applicazioni che hanno avuto successo si è diffusa in maniera capillare grazie alla forza di condivisione di questi due strumenti. Su facebook quasi non facciamo caso agli inviti degli amici ad eventi, feste o richieste di download. Ma, quando arriva un messaggio o un email, eccoci là pronti a vedere cosa ci ha mandato il nostro amico più fidato.

Eh si! perché, generalmente, il numero o l’email è un’informazione personale conosciuta solo dagli amici o dai colleghi di lavoro. E chi non vorrebbe seguire, installare o comunque conoscere l’applicazione o il gioco che l’amico o il collega sta utilizzando?

Una delle prime applicazioni ad utilizzare massicciamente la possibilità di inviare email e messaggi è stata sicuramente Whatsapp. Tutti i primi fortunati sono entrati grazie all’invito di un amico o collega.

Forse uno degli strumenti più efficaci a livello di comunicazione e marketing è la condivisione emotiva. Quella che ti spinge, anche inconsapevolmente, a seguire i passi e le scelte dei propri amici.

Quindi, per farla breve, in questo tutorial voglio portati a conoscenza del framework MessageUI. Grazie al framework MessageUI riuscirai ad inviare email e messaggi con il linguaggio Swift dalla tua applicazione iOS.

Sei pronto a diventare uno spammer seriale?

Come progetto base per la tua applicazione, puoi creare un’applicazione simile all’immagine che trovi qui sotto. Il progetto è composto da un ViewController di partenza e due bottoni che portano ad un rispettivo ViewController che nella grafica posseggono gli stessi contenuti. Ovvero una label, una text view ed un bottone. In fondo alla pagina trovi il progetto completo che puoi scaricare nel caso dovessi avere dei problemi.

MessageUI Framework linguaggio swift

Se invece dovessi avere alcuni problemi nella realizzazione dell’interfaccia e non sai da dove cominciare, forse è il caso di partire da qualcosa di più semplice. Per la costruzione delle interfacce se hai aperto il mio progetto, oltre all’auto layout, ho utilizzato le Stack View (introdotte in iOS 9).

Premetto che questo progetto non funziona nel simulatore. Quindi, onde evitare l’autocombustione, devi obbligatoriamente possedere un iPhone con cui poter testare l’applicazione.

Il framework MessageUI

Apple mette a disposizione un Framework per l’invio dei messaggi e delle email. Questo framework prende il nome di MessageUI ed, al suo interno, contiene solamente due classi e due protocolli:

  • MFMailComposeViewController: Ovvero il ViewController per l’interfaccia standard utilizzata per l’invio di una email. La classica pagina che si apre quando crei una nuova email da inviare.
  • MFMessageComposeViewController: Il ViewController con l’interfaccia standard per l’invio di un messaggio.

I restanti due protocolli sono i Delegate, ovvero per l’utilizzo delle sopracitate classi da parte di altri ViewController. Il framework MessageUI non contiene niente di più e niente di meno.

Quindi non ci resta che testare queste due classi.

Inviare una Email con il linguaggio Swift

Per prima cosa spostati nel tuo EmailViewController ed importa il framework MessageUI. Successivamente, devi rendere la classe delegata alla gestione del MFMailComposeViewController, quindi devi implementare il protocollo MFMailComposeViewControllerDelegate. Alla fine, dovresti avere la seguente classe:

Nel metodo sendEmail_clicked, che nel mio caso è l’IBAction collegata al bottone dell’interfaccia, prima di utilizzare l’oggetto MFMailComposerViewController, devi controllare che il dispositivo può effettivamente inviare le email. 

Il metodo che controlla se il dispositivo può inviare, o no, una email è il canSendMail(). Il metodo restituisce un booleano, true o false, che stabilisce l’esito del controllo. Nel caso in cui dovesse ritornare false, significherebbe che il dispositivo non è predisposto all’invio di una email (ad esempio non ha account configurati) e, di conseguenza, bisogna avvisare l’utilizzatore ed evitare la creazione dell’oggetto MFMailComposerViewController.

All’interno della IBAction sendEmail_clicked, che ti ricordo è il mio metodo collegato al bottone dell’interfaccia, aggiungi il seguente codice:

Nel caso dell’else puoi istanziare una AlertView in modo da avvisare l’utilizzatore dell’errore generato.

Adesso, all’interno dell’if true, puoi istanziare l’oggetto MFMailComposerViewController. Una volta istanziato, devi assegnargli chi sarà il suo delegato (cioè chi sarà a gestirlo, nel tuo caso è il ViewController in cui hai inserito il codice).

Fatto questo passaggio, devi definire chi sarà il destinatario ed il contenuto dell’email. A tale scopo, puoi utilizzare i metodi:

  • setToRecipients([String]): Che accetta in ingresso un array di stringhe nel caso in cui volessi inviare a più persone la tua email.
  • setSubject(String): Definisce l’oggetto dell’email
  • setMessageBody(message: String, isHTML: Bool): Dove il primo parametro è il messaggio da inviare ed il secondo è un booleano che indica se il messaggio contiene dei tag html oppure no.

Dopo aver settato i campi dell’email, puoi presentare il MailComposer con il presentViewController.

Se vuoi testare l’applicazione, ti ricordo che devi collegarla al tuo iPhone reale e selezionarlo da Xcode per il test su dispositivo. Se provi ad avviare il progetto sul simulatore, verrà generato un errore che non potrai risolvere.

MFMailCoposeViewController e inviare email con linguaggio swift

La foto è uno screen del dispositivo. Ti ricordo che il progetto funziona solo su dispositivo reale e non sul simulatore.

Infine, dato che il MailCompose non si chiude quando invii l’email o elimini la bozza, devi aggiungere il metodo del delegate didFinishWithResult. Il metodo didFinishWithResult viene invocato quando l’utente preme sul bottone Invia o Annulla. Per capire il motivo della chiusura del controller ti basta inserire uno switch, e successivamente chiamare il dismissViewController per chiudere definitivamente il MailCompose:

Inviare un messaggio con il linguaggio Swift

I passaggi per l’invio di un messaggio sono praticamente gli stessi. I metodi cambiano semplicemente il nome e rimangono uguali nell’implementazione.

Il primo passaggio è sempre quello del check sulla possibilità di invio di un messaggio. Qui il metodo da richiamare si chiama canSendText() e restituisce false nel caso in cui non è possibile inviare un messaggio.

A differenza di un’email, per un messaggio ti basta definire solamente il destinatario e il testo del messaggio. Una volta creato l’oggetto MFMessageComposeViewController e dopo aver assegnato il delegate, puoi riempire le proprietà:

  • recipients: La proprietà è di tipo Array di String e serve a definire i vari destinatari del messaggio.
  • body: La proprietà è di tipo String e rappresenta il messaggio da inviare.
Infine, implementa il metodo didFinishWithResult per gestire gli eventi legati alla pressione del tasto Invia o Annulla della finestra di invio di un messaggio:
Inviare un messaggio con il linguaggio swift

Anche in questo caso, l’invio di un messaggio con MFMessageComposeViewController funziona solo su dispositivo reale e non su simulatore.

Considerazioni

Come spero di aver spiegato, inviare Email e Messaggi con il linguaggio Swift è abbastanza semplice e poco complesso. Il motivo reale che mi ha spinto a scrivere questo articolo riguardava più l’acquisizione di nuovi utenti per la propria applicazione.

Inviare una email, meglio ancora un messaggio, è uno strumento potentissimo per pubblicizzare un contenuto della tua applicazione. Spesso sono proprio i contatti telefonici personali che cominciano a scaricare la tua applicazione più per curiosità che per reale necessità.

Ovviamente tra i tuoi contatti ci sarà quello che sarà realmente interessato ed, automaticamente, potrebbe utilizzare la funzione di sponsorizzazione della tua applicazione per invogliare i propri contatti a scaricare la tua applicazione. Ma non voglio annoiarti con storie di questo tipo, anche perché, ci tornerò sicuramente in un nuovo articolo.

Dove andare da qui

Per rimanere in tema di condivisione e acquisizione utenti, ti consiglio di dare un’occhiata a questi articoli:

Download del progetto

[sociallocker][wpdm_package id=’41916′][/sociallocker]

Buona Programmazione!

Start typing and press Enter to search

Come tradurre un'app iOS. Rendi internazionale la tua applicazioneCreare una Collection View in Swift