In alcune applicazioni risulta utile conoscere le proprietà del sistema come, ad esempio, il nome del dispositivo, il modello e molto altro. Questa operazione viene eseguita in maniera molto semplice utilizzando la classe UIDevice che ci mette a disposizione diversi metodi per conoscere le caratteristiche del dispositivo nel quale è stata lanciata l’applicazione.
Vediamo adesso come utilizzare questa classe, ed i relativi metodi, per conoscere:
- il nome del dispositivo
- il modello
- il nome e la versione del sistema operativo
Per far ciò è sufficiente creare un’nuovo progetto, oppure utilizzarne uno vecchio, inserendo all’interno del file di intestazione del ViewController i seguenti attributi:
@interface caratteristicheDevice : UIViewController {
IBOutlet UILabel *modello;
IBOutlet UILabel *nome;
IBOutlet UILabel *nomeSistema;
IBOutlet UILabel *versioneSistema;
}
@property (nonatomic, retain) IBOutlet UILabel *modello;
@property (nonatomic, retain) IBOutlet UILabel *nome;
@property (nonatomic, retain) IBOutlet UILabel *nomeSistema;
@property (nonatomic, retain) IBOutlet UILabel *versioneSistema;
@end
Creiamo adesso un nuovo file .xib, apriamo interface builder ed inseriamo nella view quattro label che poi assoceremo, usando il File’s Owner. A questo punto inseriamo il seguente codice nel solito metodo viewDidLoad, dopo aver inserito il synthesize dei vari attributi:
modello.text = [[UIDevice currentDevice] model];
nome.text = [[UIDevice currentDevice] name];
nomeSistema.text = [[UIDevice currentDevice] systemName];
versioneSistema.text = [[UIDevice currentDevice] systemVersion];
Invocando il metodo di classe currentDevice otterremo il riferimento al dispositivo in uso e, così facendo, avremo la possibilità di invocare gli altri metodi per conoscerne le caratteristiche.
Utilizzando sempre la classe UIDevice potremo anche accedere ad altre proprietà del dispositivo come, per esempio, il livello di carica della batteria. Il metodo che andremo ad utilizzare sarà batteryLevel il quale restituisce un float che varrà 1.0 se la batteria è caricata al 100% oppure il valore 0.0 se è totalmente scarica (se la batteria è carica al 50% il valore sarà 0.5). Questo potrebbe essere un punto di partenza per creare un’applicazione che mostri il livello di batteria del dispositivo: creiamo un’immagine a sfondo rosso di lunghezza 100 pixel al quale sovrapporre un’immagine a sfondo verde di lunghezza pari al valore restituito dal metodo batteryLevel moltiplicato per 100. Sul simulatore, purtroppo, non è possibile testare questo codice in quanto, non essendoci batteria, il livello di carica risulta sconosciuto. Se deciderete di registrarvi come sviluppatori, potrete però provare questo piccolo pezzo di codice su un dispositivo fisico senza nessun problema:
CGRect frame = CGRectMake(40,40, 100, 40);
UIImageView * image;
image = [[UIImageView alloc] initWithFrame:frame];
image.backgroundColor = [UIColor redColor];
[self.view addSubview:image];
//abilitiamo il monitoraggio della batteria
[UIDevice currentDevice].batteryMonitoringEnabled = YES;
float livelloBatteria = [[UIDevice currentDevice] batteryLevel];
livelloBatteria = livelloBatteria*100;
CGRect frame1 = CGRectMake(40,40, livelloBatteria , 40);
UIImageView * image1;
image1 = [[UIImageView alloc] initWithFrame:frame1];
image1.backgroundColor = [UIColor greenColor];
[self.view addSubview:image1];