Tesina esame `Mobile Web Design`

Transcript

Tesina esame `Mobile Web Design`
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.