Introduzione ad iCloud

1,065 views

Published on

Slide della lezione del 17 aprile 2012 di Tecnologie Lato Server - Università degli Studi di Udine. Introduzione breve all'utilizzo di iCloud per l'implementazione di uno strumento di rilevazione telemetrica.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,065
On SlideShare
0
From Embeds
0
Number of Embeds
151
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduzione ad iCloud

  1. 1. Dr. Paolo Casoto, Ph. D., 2012 Dr. Paolo Casoto, Ph. D., 2012 1
  2. 2. iCloud Insieme di interfacce e servizi che consentono l’interscambio di informazioni fra applicazioni in esecuzione su differenti dispositivi  Galassia eterogenea di dispositivi ○ Mobile ○ Tablet ○ Desktop ○ Web Dr. Paolo Casoto, Ph. D., 2012 2
  3. 3. iCloud Singolo punto di accesso per la memorizzazione di dati  Backup remoto dei dati  Sincronizzazione dei dati in tempo reale senza interazione esplicita da parte dell’utente Le medesime informazioni e dati condivisi su tutti i propri dispositivi  E.g.: il record raggiunto in un gioco installato sul mio iPhone è immediatamente accessibile dalla stessa app su iPad Dr. Paolo Casoto, Ph. D., 2012 3
  4. 4. iCloud: modalità dimemorizzazione iCloud mette a disposizione degli sviluppatori due tipologie di memorizzazione dei contenuti 1. Memorizzazione su tabella di hash chiave- valore di piccole quantità di dati con variabilità ridotta ○ Dati che in generale conservereste in un file di proprietà o preferenze della vostra applicazione 2. Memorizzazione di documenti Dr. Paolo Casoto, Ph. D., 2012 4
  5. 5. iCloud: memorizzazione chiave-valore Piccole quantità di dati  Dimensione massima 1 MB Formato chiave-valore  In iOS tale formato è generalmente associato alla struttura dati property-list, un formato XML per la memorizzazione di collezioni chiave- valore. Limitata modificabilità  E.g.: proprietà dell’applicativo Tipi dati limitati ai dati supportati dal formato property-list Dr. Paolo Casoto, Ph. D., 2012 5
  6. 6. iCloud: memorizzazione chiave-valore Sincronizzazione periodica ad intervalli di tempo predefiniti Nessuna gestione dei conflitti fra le versioni  La versione con il timestamp più recente è la versione corrente. Incide limitatamente sulla interfaccia grafica della applicazione  “Sotto il cofano” Dr. Paolo Casoto, Ph. D., 2012 6
  7. 7. iCloud: memorizzazione difile Consente la memorizzazione di file e cartelle  Può essere utilizzato non solo per la memorizzazione di documenti in senso lato (e.g.: file di testo) ○ Memorizzazione dei dati del modello ○ Memorizzazione di dati privati dell’applicativo ○ Memorizzazione di dati generati dall’utente La gestione è analoga a quella di un filesystem tradizionale  Apertura, chiusura, scrittura e lettura di file e cartelle Dr. Paolo Casoto, Ph. D., 2012 7
  8. 8. iCloud: memorizzazione difile Spazio limitato alla dimensione consentita dall’account iCloud dell’utente Aggiornamento in modalità pull  Quando avviene una modifica ad un file, tale modifica è propagata a tutti i dispositivi ○ Solo a livello di metadata ○ Il file è scaricato interamente solo in occasione del primo utilizzo successivo alla modifica Dr. Paolo Casoto, Ph. D., 2012 8
  9. 9. iCloud: memorizzazione difile Dr. Paolo Casoto, Ph. D., 2012 9
  10. 10. iCloud e sicurezza Tutte le applicazioni iOS operano, per ovvi motivi di sicurezza, all’interno di una sandbox  L’accesso al filesystem è limitato alle sole cartelle private dell’applicazione stessa  Non è consentito l’accesso a file di altre applicazioni o a file del sistema Anche in fase di utilizzo di iCloud è necessario identificare univocamente i soli documenti e le sole cartelle di proprietà dell’applicazione. Dr. Paolo Casoto, Ph. D., 2012 10
  11. 11. iCloud e sicurezza Ciascuna applicazione è caratterizzata da un identificativo univoco, il bundle.  Il bundle identifica univocamente una applicazione all’interno di un team di sviluppo, a sua volta caratterizzato da un codice identificativo univoco di 10 cifre.  Codice team + bundle = codice univoco a livello di App Store Lo sviluppatore può definire le cartelle che saranno utilizzate su iCloud da una applicazione indicandone i valori di Codice team + bundle Dr. Paolo Casoto, Ph. D., 2012 11
  12. 12. iCloud e sicurezza Una applicazione può, quindi, accedere anche alle cartelle condivise da altre applicazioni dello stesso team.  E.g.: applicazioni con proprietà o configurazioni condivise. Non è possibile, al contrario, accedere ai dati di applicazioni sviluppate da terze parti al di fuori dal team. Dr. Paolo Casoto, Ph. D., 2012 12
  13. 13. Integrare iCloud all’interno dellapropria applicazione Verificare la disponibilità del servizio iCloud  L’utente ha configurato il servizio, la connettività è disponibile, et al. Persistere su file lo stato della propria applicazione Collocare i propri file sul servizio iCloud e gestirne lo stato del trasferimento. Gestire i conflitti che possono generarsi nel caso di accesso concorrente alle risorse condivise. Dr. Paolo Casoto, Ph. D., 2012 13
  14. 14. Verificare la disponibilità delservizio iCloud E’ necessario invocare uno specifico metodo per consentire all’applicazione di includere all’interno del proprio sandbox le directory all’interno di iCloud URLForUbiquityContainerIdentifier  restitisce l’url (un oggetto NSUrl) che rappresenta la cartella alla quale l’applicazione intende accedere. E’ necessario invocare il metodo almeno una volta per ciascuna cartella, al fine di verificare la disponibilità del servizio iCloud Dr. Paolo Casoto, Ph. D., 2012 14
  15. 15. Gestione della concorrenza L’accesso ad un file memorizzato su iCloud deve essere regolato opportunamente al fine di evitare la modifica concorrente.  E’ necessario disporre di una soluzione che consenta un accesso controllato a ciascun file. ○ E.g.: Protocollo NSFilePresenter ○ A proposito, in Objective C un protocollo è il corrispettivo di una interfaccia in JAVA Dr. Paolo Casoto, Ph. D., 2012 15
  16. 16. NSFilePresenter e UIDocument In iOS 5 è stata introdotta una specifica classe, la classe UIDocument  Finalizzata alla gestione ed alla memorizzazione di contenuti prodotti dall’utente  L’utente visualizza, crea e modifica un insieme di istanze di UIDocument ○ UIDocument implementa il protocollo NSFilePresenter Ma cosa può essere rappresentato mediante un UIDocument  Immagini, testi, informazioni o riferimenti a file esistenti  Classe intermedia che collega informazioni memorizzate all’interno di un file con il modello dei dati. Dr. Paolo Casoto, Ph. D., 2012 16
  17. 17. UIDocument Implementa automaticamente i meccanismi necessari alla persistenza delle informazioni.  Salvataggio periodico delle informazioni invisibile all’utente  Gestione di versioni e conflitti  Gestione dei processi di lettura e scrittura in background Dr. Paolo Casoto, Ph. D., 2012 17
  18. 18. UIDocument Ciascun UIDocument è caratterizzato da:  URL univoco di riferimento  Nome  Tipo  Data di ultima modifica  Stato del documento Dr. Paolo Casoto, Ph. D., 2012 18
  19. 19. UIDocument ed iCloud Definito un oggetto UIDocument, associato ad un file corrispondente, è possibile collocare tale file all’interno delle cartelle della sandbox dell’applicazione  Sempre in un thread secondario, o blocchereste l’applicazione Il demone di gestione di iCloud verifica le modifiche apportate ai file e ne sincronizza lo stato con il server  Anche in questo caso la sincronizzazione è gestita mediante opportuno oggetti associati ai singoli file Dr. Paolo Casoto, Ph. D., 2012 19
  20. 20. Conflitti e versionamento iCloud consente la gestione di versioni differenti dei medesimi documenti e la gestione di eventuali conflitti  Merge  Revert  Commit Dr. Paolo Casoto, Ph. D., 2012 20
  21. 21. Ricerca ed aggiornamento I file condivisi con iCloud presenti all’interno della applicazione possono essere modificati anche ad insaputa della applicazione stessa  A differenza di tutte le altre tipologie di file, che possono essere modificati all’interno della sandbox esclusivamente dalla applicazione stessa Gestire le notifiche relative all’aggiunta ed alla rimozione di un file all’interno del container iCloud Dr. Paolo Casoto, Ph. D., 2012 21
  22. 22. Stato dei documenti condivisimediante iCloud Il programmatore può accedere in qualsiasi momento allo stato delle risorse condivise mediante iCloud dalla propria applicazione  E.g.: file in fase di upload, file in fase di download, file già scaricato. Quando si cerca di accedere ad un file in fase di download, il thread di accesso rimane bloccato fino alla conclusione del download Dr. Paolo Casoto, Ph. D., 2012 22
  23. 23. Stato dei documenti condivisimediante iCloud Verificate quindi lo stato dei vostri documenti prima di cercare di accedervi, anche a livello grafico  E.g.: non consentire la selezione degli elementi ancora in fase di download Attenzione: mentre le modifiche ai file sono inviate immediatamente al server, le nuove versioni di file modificati altrove sono scaricate solo all’atto della richiesta Dr. Paolo Casoto, Ph. D., 2012 23
  24. 24. Stato dei documenti condivisimediante iCloud E’ possibile forzare in qualsiasi momento l’avvio del download di un file non scaricato interamente  Attenzione, il tutto può generare il blocco della vostra interfaccia grafica  Operare su thread secondari Dr. Paolo Casoto, Ph. D., 2012 24
  25. 25. Memorizzazione chiave-valore Grazie ad una specifica classe, la classe NSUbiquitousKeyValueStore, è possibile disporre di un tabella di hash condivisibile mediante iCloud.  Corrispettivo iCloud della classe NSUserDefaults ○ Classe per la memorizzazione di proprietà locali. La sincronizzazione delle informazioni memorizzate è del tutto trasparente al programmatore !!! Dr. Paolo Casoto, Ph. D., 2012 25
  26. 26. Il vademecum delprogrammatore iCloud Gestire la cancellazione dei documenti con cura.  L’eliminazione di un documento in locale comporta la rimozione anche su tutti i dispositivi dell’utente e sul server Non condividere mai i file privati o interni alla applicazione Gestire con cura il posizionamento di documenti all’interno della cartella Documents dell’utente  Cartella “speciale” che l’utente può visualizzare e modificare. Dr. Paolo Casoto, Ph. D., 2012 26
  27. 27. Ma passiamo ad un esempioreale Un cliente vi ha richiesto una applicazione che consenta ad un insieme di controllori sparsi sul territorio di effettuare un insieme di misurazioni  E.g.: rilevamento dell’andamento di un sensore Ciascun rilevamento è caratterizzato dal valore identificato, dal nome del rilevatore, dalla data e dalla posizione geografica (lat – lon). Dr. Paolo Casoto, Ph. D., 2012 27
  28. 28. Definiamo la classeMisurazione Definiamo una classe Misurazione così definita:  NSString *codiceOperatore  NSNumber *valoreMisurato  NSDate *data  NSNumber *lat  NSNumber *lon Estendiamo la classe UIDocument descritta in precedenza Dr. Paolo Casoto, Ph. D., 2012 28
  29. 29. Implementiamo i metodi per lapersistenza Implementiamo i due metodi necessari alla memorizzazione ed alla lettura dei dati dal filesystem  Con gestione centralizzata dell’accesso e della sincronizzazione  contentsForType:error: ○ Salvataggio dei dati  loadFromContents:ofType:error ○ Caricamento dei dati Dr. Paolo Casoto, Ph. D., 2012 29
  30. 30. Gestiamo le modifiche aidocumenti Gestiamo ora le eventuali modifiche che possono essere generate ai nostri documenti mentre l’applicazione è in funzione.  Implementiamo una classe in grado di gestire l’informazione relativa alla gestione del caricamento delle informazioni ○ Delegato: corrispettivo dei delegati in ambiente .NET e dei listener in Java ○ Funzione di callback da invocare in presenza di specifici eventi Dr. Paolo Casoto, Ph. D., 2012 30
  31. 31. Dr. Paolo Casoto, Ph. D., 2012 31
  32. 32. casoto@mobe.it Dr. Paolo Casoto, Ph. D., 2012 32

×