La condivisione, o Open Source, è ciò che ha reso e sta rendendo grande la programmazione dei giorni nostri.

Lo sappiamo! sviluppare un’app, sopratutto all’inizio, può essere un vero e proprio calvario.

Spesso vogliamo realizzare interfacce o funzionalità complesse. Vogliamo aggiungere quel quid in più che rende il nostro prodotto diverso e sempre competitivo.

Chi non lo vorrebbe?

Però, nella maggior parte dei casi si finisce per non avere le competenze o per non avere il tempo necessario a crearle.

Peppe, che si fa? scendiamo nella mediocrità o proviamo il passo più lungo?

Niente di tutto ciò.

Negli ultimi anni sono tantissimi gli sviluppatori che amano condividere il proprio lavoro, il proprio codice e le proprie soluzioni con il mondo intero.

Cercando in rete avrai sicuramente notato due siti saltar sempre fuori:

  • Stack Overflow: Gli sviluppatori pongono delle domande e, generalmente, ricevono delle risposte con la soluzione al problema.
  • Github: Vengono condivisi interi codici, framework ed app con l’intento di diffonderli gratuitamente e ricevere in cambio un aiuto nel mantenerli.

Da questi due siti puoi tirar fuori di tutto. Io li uso tutti i giorni per informarmi, vedere come fanno gli altri, per poi applicare ai miei progetti.

Quindi, che devo fare?

Non devi reinventare la ruota (anche se sono un po’ contrario a questo pseudo-principio).

Però, quando andiamo di fretta, il riutilizzo può essere una manna dal cielo nel velocizzare i nostri processi di sviluppo.

Ecco perché, oggi, voglio mostrarti come utilizzare il codice prodotto dagli altri nel tuo progetto iOS.

Lo faremo sfruttando CocoaPods.

CocoaPods?

Allaccia le cinture perché stai per entrare nel fantastico mondo dei Pods.

Cos’è CocoaPods?

Cocoapods è un’app per la gestione delle dipendenze dei nostri progetti. In pratica, ci permetterà di installare ed aggiornare automaticamente i framework degli altri sviluppatori.

Dietro le quinte è un aggregatore di risorse gratuite condivise da chi ha buon cuore.

Nel sito web, infatti, potrai sfogliare questa enorme libreria utilizzando la funzione di ricerca:

Cos'è cocoa pods e come integrarlo nelle nostre app ios
https://www.cocoapods.org

I Pods, come vengono chiamati, spaziano dalla grafica fino alle funzionalità più stravaganti ed utili.

Per esempio, potrai integrare un menu particolare come quello a scorrimento laterale, un bottone con stile material, una fotogallery, un network layer e così via.

Cos’è un Pod?

Un Pod è, nella maggior parte dei casi, un framework.

Cos’è un framework?

È un insieme di classi, strutture etc per la risoluzione di un problema. Una sorta di “cartella” con dei file che potrai importare nel tuo progetto.

Se vuoi approfondire, ho spiegato cos’è un framework e come crearlo in questo tutorial:

Quindi, in definitiva, CocoaPods ti permetterà di installare ed aggiornare automaticamente i framework, prodotti dagli altri sviluppatori, all’interno del tuo progetto Xcode.

Come installare CocoaPods

Installare CocoaPods è semplicissimo. Apri il terminale del tuo Mac e digita:

sudo gem install cocoapods

Premi invio.

Con questo comando, dai istruzione di scaricare ed installare quest’applicazione. Se hai impostato una password per il tuo mac, ti verrà richiesta.

Nel caso i comandi del terminale ti suonassero come nuovi:

  • sudo: comando per i permessi di root/amministrazione del mac.
  • gem install è il comando che permette di installare gemme (“applicazioni”) scritte in Ruby sul proprio Mac (Ruby è installato di default in tutti i Mac).
  • cocoapods: Infine, stai chiedendo al manager di Ruby di installare cocoapods.

Come aggiungere un Pod al tuo progetto

Una volta installato CocoaPods, adesso potrai aggiungere i Pods ai tuoi progetti (nuovi o vecchi che siano).

Prima di tutto, naviga con il terminale fino alla cartella del tuo progetto. Nel mio Mac, il progetto d’esempio l’ho messo in /Documents/Progetti/CocoaTestApp.

Quindi, io digiterò il comando cd seguito dal path:

cd /Users/giuseppe/Documents/Progetti/CocoaTestApp
  • cd: sta per change directory e serve per entrare in una directory del Mac.

PRO TIP: Nel caso dovessi avere difficoltà a trovare il percorso della cartella del tuo progetto, puoi trascinarla nel terminale ed il percorso verrà scritto in automatico.

Adesso digita il comando pod init per inizializzare CocoaPods:

pod init

Ora vai nella cartella del progetto, dovresti trovare un file chiamato PodFile.

Apri il PodFile con un editor di testo. Io uso Atom, che è un editor di testo gratuito, ma puoi usare tranquillamente il Text Edit.

PodFile cocoa pods xcode ios

Target – do – end

Il blocco targetdoend sta ad indicare in quale target della tua app verranno installati i pods.

Tecnicamente dentro un PodFile puoi aggiungere diversi di questi blocchi in modo tale da installare i pods solamente dove necessario.

Esempio?

Se mi serve un pod solamente nel Today Extension, allora aggiungerò un nuovo target – do – end a tale scopo.

Alamofire

Il pod che voglio farti installare si chiama Alamofire ed è un framework che ti aiuterà nella scrittura di richieste HTTP.

Non entrerò nei dettagli di Alamofire perché non è il focus di questo tutorial. A noi interessa semplicemente come installare un framework usando cocoapods.

Generalmente i framework hanno un Readme (le istruzioni) nella pagina principale di Github. Se non lo hanno è già un campanello d’allarme (ti consiglio di non installare il pod).

Nel caso di Alamofire, se scorri nel paragrafo dedicato all’installazione dice, per quanto riguarda CocoaPods, di scrivere la seguente riga:

pod 'Alamofire', '~> 5.0.0.beta.1'

Dove devo aggiungere quest’istruzione?

La devi inserire dentro il blocco target – do – end. Nel mio caso, il file PodFile, sarà il seguente (se copi ed incolli ricordati di cambiare il nome del target e la versione di Alamofire dato che potrebbe essere stato aggiornato):

target 'CocoaTestApp' do
  use_frameworks!
  pod 'Alamofire', '~> 5.0.0.beta.1'
end

Posso aggiungere più pod?

Ovviamente si!

Ti basterà aggiungere una nuova riga con il nome del pod da installare. Per esempio, se volessi aggiungere Firebase insieme ad Alamofire il mio PodFile diventerà questo:

target 'CocoaTestApp' do
  use_frameworks!
  pod 'Alamofire', '~> 5.0.0.beta.1'
  pod 'Firebase'
end

Firebase è il SaaS di Google: Ti permette di aggiungere velocemente Database, Login, Analytics etc alla tua app. Ne ho parlato in questo tutorial introduttivo.

Installare i Pods

Salva il PodFile. Torna al terminale e digita il comando pod install:

pod install

Dovrebbe scaricare tutti i pods inseriti ed installarli all’interno del tuo progetto.

A termine del processo, nella cartella dovrebbero essere comparsi dei nuovi file e cartelle:

installazione pod e xcworkspace

Nel particolare dovresti trovare:

  • La cartella Pods che conterrà i framework scaricati
  • Il file con estensione xcworkspace che dovrai usare per aprire il progetto.

Da ora in avanti dovrai aprire il progetto con il file xcworkspace. In questo modo potrai utilizzare correttamente i Pods scaricati.

Aperto il workspace, potrai utilizzare il pod come un normalissimo framework (quindi con l’import nel file etc). Se non ti ricordi come si fa, puoi leggere il tutorial in cui ho spiegato come si creano ed utilizzano.

Aggiornare i Pods

Dopo un po’ sicuramente ti capiterà di voler aggiornare i pods. Generalmente accadrà o perché non sono più compatibili con iOS/watchOS/etc oppure perché presentavano dei bug.

Per aggiornare i pod ti basterà digitare il comando pod update all’interno della cartella del progetto:

pod update

Prima di farlo, ti consiglio di controllare sempre la documentazione ed i changelog dei framework. In questo modo potrai decidere meglio se aggiornare o meno.

Platform

Se hai notato, nel PodFile in alto c’è un’istruzione che è commenta e riguarda la versione di iOS:

platform :ios, 'x.x'

Se togli l’asterisco, che indica la non esecuzione, abiliterai la versione di compatibilità minima dei pods con iOS.

Così facendo, durante un pod update o pod install verranno scaricati i pod compatibili con quella versione o le successive di iOS.

Nel caso in cui stessi supportando diverse piattaforme, ti basterà aggiungere altre istruzioni platform al tuo podfile.

Versione dei Pods

Se dovessi aver bisogno di installare una versione ben specifica, dopo il nome del pod, metti una virgola ed aggiungi una stringa con la versione desiderata:

pod 'Firebase/Firestore', '5.10.1'

Se invece vuoi installare delle versioni definendo delle specifiche più complesse, puoi usare i seguenti simboli:

  • ‘= 1.2.0’ installerà esattamente la versione 1.2.0 (il numero è un esempio). L’equivalente del comando visto sopra.
  • ‘> 1.0.0’ le versioni successive alla 1.0.0. Puoi aggiungere anche il ‘>=’ per includere anche l’estremo inferiore.
  • ‘<‘ o ‘<=’ seguiti dalla versione, fanno l’opposto del comando precedente.
  • ‘~> 5.0.0’ installerà le versioni superiori alla 5.0.0 fino alla versione 6.0.0. Come se fosse un >= e <= di una versione solo che l’estremo superiore è definito partendo dall’incremento di una unità sull’inferiore.
pod 'Firebase/Auth', '> 5.0.0' // qualsiasi versione superiore alla 5
pod 'Firebase/Auth', '<= 5.0.0' // qualsiasi versione inferiore o compresa la 5
pod 'Firebase/Auth', '~> 5.0.0' // dalla 5 alla 6

Disinstallare i pods

Una delle cose più fastidiose riguardo CocoaPods è quella legata alla rimozione di uno o più pods.

Così è praticamente impossibile.

Allora, come fare?

Dovrai utilizzare una gem esterna che si chiama cocoapods-deintegrate. Quindi, installala utilizzando il comando:

sudo gem install cocoapods-deintegrate

Completata l’istallazione, spostati con il cd nel progetto incriminato ed avvia il comando deintegrate:

pod deintegrate

Così facendo verranno rimossi tutti i pods ed il progetto tornerà alla forma base. All’interno della cartella ritroverai solamente il PodFile.

A questo punto rimuovi dal PodFile i pod che non ti servono, salva e re-installa i pod rimasti con il comando pod install.

Semplice, veloce ed indolore.

La lista dei migliori Framework

Dove trovo i pods e framework per la mia app?

Qualcuno ha ben pensato di creare una lista con i migliori framework in circolazione.

La repo Awesome iOS contiene un’infinità di framework ordinati per tipologia. Viene costantemente aggiornata, quindi salvati il link tra i preferiti perché è un must have.

Conclusione

Prima di lasciarti, voglio darti un suggerimento.

CocoaPods, come anche altri strumenti (Carthage o lo Swift Package Manager), aggiungono delle dipendenze esterne al tuo progetto.

Come tutte le dipendenze, se assunte in eccesso, possono portare a dei veri e propri disastri.

Peppe, che vuoi dire?

I disastri avvengono per un motivo semplicissimo: molti framework potrebbero non essere aggiornati di anno in anno.

In questa situazione potresti decidere di dover rimuovere il framework o, se è proprio necessario e questo è open source, dovrai rimboccarti le maniche per risolvere i suoi problemi.

Quindi, fai molta attenzione 😂

Il mio consiglio è di installare solamente quelli necessari, ben mantenuti (basta vedere la frequenza di aggiornamenti) e con un’ottima documentazione.

Ti lascio il link all documentazione ufficiale di CocoaPods.

E, se ti fa piacere, ricordati di seguirmi anche su Youtube ed Instagram dove rilascio tutorial settimanalmente e piccole tips (su IG).

Buona Programmazione!