T#064 – Rilevare le informazioni sul device in uso (modello, nome, sistema, versione)
Se lo sviluppo di applicazioni iPhone, per voi, è qualcosa di più di una semplice passione o curiosità e avete intenzione di diffondere il più possibile le vostre applicazioni, dovrete scontrarvi, prima o poi, con le ormai numerose diverse configurazioni “device/sistema operativo installato” esistenti. Infatti, se non volete perdere potenziali clienti, dovrete rendere compatibile le vostre creazioni con tutte le combinazioni possibili e immaginabili di iPhone/iPod. Pensate ad esempio un iPod Touch 3G con ancora iPhone OS 3.x, o iPhone 4 con iOS 4 o ancora iPhone 3G con iOS 4 e così via. Alcune funzionalità, come ben saprete esistono solo per un dispositivo piuttosto che per un altro (vedi fotocamera) o ancora per una versione di iPhone OS piuttosto che un’altra (vedi multitasking). Insomma, per ottimizzare al meglio i vostri programmi iPhone dovrete intercettare, quando necessario, alcune informazioni circa il device che sta eseguendo la vostra applicazione e programmare alcune funzionalità in modo diverso per ogni versione o combinazione esistente.
Ok, è sicuramente lavoro in più per noi programmatori, ma se non vogliamo perdere clienti e/o ottenere feedback negativi, dovremmo farcene una ragione e studiare bene tutto con calma.
Oggi vedremo come sfruttare UIDevice per ottenere modello del device, nome, sistema operativo installato e versione. Partiamo subito con questo semplice tutorial.
Apriamo Xcode e creiamo un nuovo progetto. Dall’elenco dei template disponibili selezioniamo “View-based Application” e proseguiamo. Diamo un nome al nostro progetto, ad esempio “myDevice”, scegliamo una posizione in cui salvare (sulla scrivania andrà benissimo) e proseguiamo. Apriamo il file “myDeviceViewController.h” e dichiariamo 4 UILabel che useremo per mostrare i dati rilevati:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #import <UIKit/UIKit.h> @interface myDeviceViewController : UIViewController { IBOutlet UILabel *lblModel; IBOutlet UILabel *lblName; IBOutlet UILabel *lblSystemName; IBOutlet UILabel *lblSystemVersion; } @property (nonatomic, retain) IBOutlet UILabel *lblModel; @property (nonatomic, retain) IBOutlet UILabel *lblName; @property (nonatomic, retain) IBOutlet UILabel *lblSystemName; @property (nonatomic, retain) IBOutlet UILabel *lblSystemVersion; @end |
Niente di complicato insomma, 4 semplici UILabel che grazie a IBOutlet troveremo pronte in Interface Builder per essere collegate ai rispettivi oggetti disegnati graficamente.
Salviamo e facciamo doppio-click sul file “myDeviceViewController.xib”, si aprirà quindi Interface Builder che useremo per disegnare la nostra semplicissima interfaccia grafica. Ci occorreranno semplicemente 8 UILabel. Cercate quindi UILabel in Library -> Objects e trascinatene 8 nella View. Quattro le useremo come etichette per indicare cosa verrà visualizzato in quella adiacente. Dovreste ottenere un risultato simile a quello mostrato in figura:

Non ci resta che collegare questi oggetti ai rispettivi dichiarati poco fa nel file di interfaccia .h. Per farlo clicchiamo su “File’s Owner” e spostiamoci sul “Connections Inspector”, colleghiamo quindi i 4 “lbl” con le UILabel appena trascinate. Finiti i collegamenti salviamo e chiudiamo Interface Builder.
A questo punto ci tocca implementare il codice vero e proprio che ci permetterà di mostrare a video (nelle UILabel) i dati del dispositivo che sta eseguendo la nostra applicazione iPhone. Aprite il file “myDeviceViewController.m”, aggiungete i rispettivi @synthesize subito dopo l’istruzione “@implementation myDeviceViewController”
1 | @synthesize lblModel, lblName, lblSystemName, lblSystemVersion; |
Scommentate quindi il metodo “viewDidLoad” e modificatelo come segue:
1 2 3 4 5 6 7 8 | - (void)viewDidLoad { [super viewDidLoad]; lblModel.text = [[UIDevice currentDevice] model]; lblName.text = [[UIDevice currentDevice] name]; lblSystemName.text = [[UIDevice currentDevice] systemName]; lblSystemVersion.text = [[UIDevice currentDevice] systemVersion]; } |
Come vedete è tutto molto semplice e non facciamo altro che andare a settare la proprietà “text” delle UILabel con il rispettivo valore prelevato tramite [[UIDevice currentDevice] nomeValoreCheCiInteressa];
Questo semplice tutorial si conclude qui, a questo punto sapete come intercettare informazioni sul device in uso, non vi resta che perfezionare le vostre applicazioni e renderle compatibili per tutte le combinazioni di device/sistema esistenti.


















Come al solito.. Grazie!