Tesina esame Programmazione di Sistemi Mobile Realizzato da Roberto Giuliani Matricola 633688 icloud Inserimenti, modifiche e cancellazioni
icloud Prima di iniziare ad osservare le strutture e le varie implementazioni del cloud, facciamone una breve presentazioni: icloud è una collezione di servizi sviluppata da Apple, in grado di fornire salvataggi, modifiche e cancellazioni di documenti contenuti al suo interno, esempi possono essere Mail, Contatti, Eventi, Promemoria, ma anche veri e propri backup dei nostri dispositivi. Garantendo una forma di interazione completamente nuova e permettendo la possibilità di ricavare le proprie informazioni/documenti in qualsiasi momento in un qualsiasi dispositivo apple. icloud viene sviluppato in Object C e tutti i programmatori interessati possono richiederne l'utilizzo, ciò che vedremo successivamente. icloud non può essere testato direttamente sul classico simulatore, si ha obbligatoriamente bisogno della documentazione Apple e della creazione del proprio personal ID, selezionando il target 'Enable icloud' al momento della creazione ed inserendo l' 'Ubiquity Container' e il 'Keychain Group', tramite la sola pressione del tasto +. Quando l'applicazione si avvia, occorre inizializzare un 'icloud container' in un thread in background (se per qualunque motivo, come per esempio la mancanza di connessione dati, il container non si avviasse correttamente, è consigliabile una visualizzazione a display del fallimento dell'operazione, per garantire in ogni modo all'utente di agire di conseguenza. Inseriamo perciò la visualizzazione di un possibile messaggio di allerta). E compito dell icloud Contaier garantire una corretta comunicazione tra il cloud e l applicativo. Inoltre ogni transazione (inserimento, richieste, eliminazioni..) deve passare da questo costrutto.
Aggiungiamo successivamente la seguente documentazione nel delegate.m Una volta eseguito il processo di inizializzazione, sarà possibile inserire e spostare all'interno del cloud i nostri file locali. Creare un documento e inserirlo in icloud Come primo passaggio, creiamo un semplice documento locale e successivamente spostiamolo all'interno di icloud, nella cartella che chiameremo 'Documents'. (Procedimento molto richiesto nelle correnti applicazioni). La prima domanda alla quale dobbiamo trovare risposta è: Dove vengono salvati i dati? Dichiariamo un property chiamato clouddocumentsurl nel MasterViewController. E inizializziamo un URL contenente la directory del documento.
Da notare che il ContainerIdentifier è un identificatore univoco che associa il personal ID al proprio spazio cloud. Esso è strutturato gerarchicamente ad albero e contiene informazioni quale il nome dell'app che ne fa utilizzo e il team ID (ricavabile tramite application:idfinischlanchingwithoptions:, questo valore è anche visualizzabile nella casella aggiunta in fase di creazione denominato 'Ubiquity Container'). Inseriamo questo nel MasterViewController.m A questo punto sappiamo dove vengono salvati i documenti caricati. La prima volta che l applicazione aggiunge un documento dal disco di rappresentanza ad un icloud (ubiquity) container, il sistema trasferisce l'intero file o pacchetto di file sul server icloud. Il primo passo è quello di inviare i metadati del documento, che includono informazioni come il nome del documento, la data di modifica, dimensione del file e il tipo di file. Questo trasferimento di metadati avviene rapidamente. Il secondo passo è quello di inviare i veri e propri dati del documento. L'invio di metadati del documento permette ad icloud di sapere rapidamente che esiste un nuovo documento, con il quale verifica alcuni aspetti. Il server icloud propaga tutti i metadati nuovi e/o modificati a tutti gli altri dispositivi disponibili collegati allo stesso account icloud, per indicare che è avvenuta una nuova operazione.
Nell immagine precedente viene evidenziato il procedimento per il corretto inserimento di un documento all interno del proprio spazio cloud. Nella quale passando i parametri, quali, l URL di destinazione (ciò l URL del proprio cloud) e l URL del file scelto (thought.fileurl) vengono creati i principali metadati da passare al container (il quale si occuperà lui stesso di inviarli). Solo una volta avvenuto il corretto log dei metadati vengono passati i veri e propri dati del documento (chiamato title ). Rimozione di un documento da icloud Prima di poter rimuovere direttamente un file dal cloud, occorre modificare la table che contiene tutte i percorsi dei file, rimuovendo la riga corrispondente. A questo punto iniziamo la vera e propria rimozione del documento all interno di icloud. L eliminazione vera e propria del file avviene nel blocco di codice che invoca il metodo coordinatewritingitematurl.
A questo punto abbiamo identificato il file che bisogna eliminare e creato una background queue per eseguire questo compito. E compito del coordinator file assicurarsi che nessun altro processo cerchi di invocare o modificare il file appena rimosso. Si deve creare una sorta di lock che mi permette l atomicità dell operazione. E consigliabile creare un ulteriore thread che lavori in background che si occupi della rimozione del nostro file da tutti i dispositivi collegati al cloud e che ne hanno accesso. Il thread richiederà al file manager di rimuovere il file specifico, se l operazione andrà a buon fine si aggiornerà la table view (vista inizialmente) e la coda di array, altrimenti se non sarà eseguita correttamente, verrà visualizzato un messaggio di errore.