t064 uidevice iphone sdk 02 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:


t064 uidevice iphone sdk 01

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.


t064 uidevice iphone sdk 02