Lorenzo Bevilacqua - Sviluppo di un'applicazione iPhone per la localizzazione di persone
1. Università degli Studi di Trieste
Dipartimento di Ingegneria e Architettura
Corso di laurea triennale in Ingegneria Informatica
Sviluppo di un’applicazione iPhone per
la localizzazione di persone
Laureando Relatore
Lorenzo Bevilacqua Chiar.mo Prof. Maurizio Fermeglia
Anno Accademico 2011/2012
2. Social network
• Sviluppo grazie al web 2.0
• Basati sulla condivisione e l’interazione tra utenti
• Possibilità di condividere contenuti di diversi tipi (testo, immagine, ...)
• Social network generici (Facebook) o specialistici (Soundcloud)
4. Problema
• Per utilizzare i social network citati occorre un’interazione continua da parte
dell’utente
Soluzione
• Far sì che sia il social network a seguire l’utente
• Sviluppo di un client per smartphone evoluti
5. Significant location monitoring
• API presente all’interno della iOS SDK (4.0+)
• Monitoraggio automatico della posizione, anche in background
• Basato sull’utilizzo di hotspot wi-fi, BTS cellulari, precedenti posizioni GPS
• Consumo di batteria nullo
• Meccanismo di tipo push
• Buona precisione in città (50 metri)
6. Bugg
• Commissionato da Easter Egg Srl, Milano
• Sviluppo iniziato nel 2010
• Durato circa 1 anno
• Disponibile per iPhone dal Natale 2010
7. Obiettivo
• Condivisione della posizione delle
persone • Base di dati
• Funzionamento generico (non check-in) • Middleware
• Aggiornamento automatico (follow me) • Client iOS
• Privacy (amici, blocchi)
8. Progettazione
Applicazione iOS Middleware Base di dati
•Esplorazione mappa •Amici •Utenti
•Lista di amici •Ricerca •Amicizie
•Profilo utente •Posizioni •Posizioni
•Modifica impostazioni •Commenti •Commenti
•Visualizzazione posizione •Impostazioni, richieste,
etc.
9. Progettazione base di dati
Entità Relazioni
• Utente • Presenza
• Amico • Amicizia
• Posizione • Commento
10. Progettazione base di dati
Progettazione logica
• Ristrutturazione schema E/R
• Generalizzazioni
11. Realizzazione base di dati
Users Tipo Locations Tipo Comments Tipo
id UINT id UINT id UINT
email VARCHAR timestamp TIMESTAMP timestamp TIMESTAMP
password VARCHAR latitude DOUBLE text TINYTEXT
firstname VARCHAR longitude DOUBLE fkuser UINT
lastname VARCHAR accuracy DOUBLE fklocation UINT
text TINYTEXT
Relationships Tipo
fkuser UINT
id UINT
fkuser UINT
fkfriend UINT
12. Realizzazione base di dati
• DBMS MySQL 5.5
• Tabelle InnoDB (integrità referenziale)
• Codifica Unicode UTF-8 4-byte (supporto alle Emoji)
13. Realizzazione middleware
• Comunicazione tramite HTTP con il client
• Utilizzo di script PHP per l’esecuzione di query
• Risposta in JSON
14. Realizzazione client
• 3 fasi (model, view, controller)
• Model: contenuto informativo (entità Utente – classe BuggUser, etc.)
• View: rappresentazione visuale del model (classi BuggMapView, etc.)
• Controller: intermediari tra model e view (classi BuggMapViewController, etc.)
• Utilizzo di connessioni asincrone (non-blocking)
17. Test e debug
• Su iOS simulator o device
• Static analyzer
• GDB
• Instruments
• Beta tester (TestFlight)
18. Risultato
• 70 classi Objective-C, 16000 righe di codice, 150 immagini UI
• 20 scripts PHP, 4500 righe di codice
• 5 tabelle InnoDB, al momento 30000 record “User”
19. Conclusioni
Stato attuale (versione 2.1.2)
• App iOS scaricabile da iOS App Store (http://appstore.com/Bugg)
Sviluppi futuri
• Scambio di messaggi tra utenti anziché commenti (privacy)
• RESTful API per dare una migliore organizzazione all’object graph
• Persistenza dei dati su client attraverso Core Data