{"id":4051,"date":"2010-07-20T17:19:17","date_gmt":"2010-07-20T15:19:17","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=4051"},"modified":"2010-07-20T17:20:40","modified_gmt":"2010-07-20T15:20:40","slug":"t064-rilevare-le-informazioni-sul-device-in-uso-modello-nome-sistema-versione","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t064-rilevare-le-informazioni-sul-device-in-uso-modello-nome-sistema-versione\/","title":{"rendered":"T#064 &#8211; Rilevare le informazioni sul device in uso (modello, nome, sistema, versione)"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-02.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-02.jpg\" alt=\"t064 uidevice iphone sdk 02\" title=\"t064-uidevice-iphone-sdk-02\" width=\"72\" height=\"140\" class=\"alignleft size-full wp-image-4052\" \/><\/a> Se lo <strong>sviluppo di applicazioni iPhone<\/strong>, per voi, \u00e8 qualcosa di pi\u00f9 di una semplice passione o curiosit\u00e0 e avete intenzione di diffondere il pi\u00f9 possibile le vostre applicazioni, dovrete scontrarvi, prima o poi, con le ormai numerose diverse configurazioni &#8220;device\/sistema operativo installato&#8221; 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\u00ec via. Alcune funzionalit\u00e0, 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&#8217;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\u00e0 in modo diverso per ogni versione o combinazione esistente.<!--more--><\/p>\n<p>Ok, \u00e8 sicuramente lavoro in pi\u00f9 per noi programmatori, ma se non vogliamo perdere clienti e\/o ottenere feedback negativi, dovremmo farcene una ragione e studiare bene tutto con calma.<!--more--><\/p>\n<p>Oggi vedremo come sfruttare <strong>UIDevice<\/strong> per ottenere modello del device, nome, sistema operativo installato e versione. Partiamo subito con questo semplice tutorial.<\/p>\n<p>Apriamo Xcode e creiamo un nuovo progetto. Dall&#8217;elenco dei template disponibili selezioniamo &#8220;View-based Application&#8221; e proseguiamo. Diamo un nome al nostro progetto, ad esempio &#8220;myDevice&#8221;, scegliamo una posizione in cui salvare (sulla scrivania andr\u00e0 benissimo) e proseguiamo. Apriamo il file &#8220;myDeviceViewController.h&#8221; e dichiariamo 4 UILabel che useremo per mostrare i dati rilevati:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n#import <UIKit\/UIKit.h>\r\n\r\n@interface myDeviceViewController : UIViewController {\r\n\tIBOutlet UILabel *lblModel;\r\n\tIBOutlet UILabel *lblName;\r\n\tIBOutlet UILabel *lblSystemName;\r\n\tIBOutlet UILabel *lblSystemVersion;\r\n}\r\n\r\n@property (nonatomic, retain) IBOutlet UILabel *lblModel;\r\n@property (nonatomic, retain) IBOutlet UILabel *lblName;\r\n@property (nonatomic, retain) IBOutlet UILabel *lblSystemName;\r\n@property (nonatomic, retain) IBOutlet UILabel *lblSystemVersion;\r\n\r\n@end\r\n<\/pre>\n<p>Niente di complicato insomma, 4 semplici UILabel che grazie a IBOutlet troveremo pronte in Interface Builder per essere collegate ai rispettivi oggetti disegnati graficamente.<\/p>\n<p>Salviamo e facciamo doppio-click sul file &#8220;myDeviceViewController.xib&#8221;, si aprir\u00e0 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\u00e0 visualizzato in quella adiacente. Dovreste ottenere un risultato simile a quello mostrato in figura:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-01.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-01.jpg\" alt=\"t064 uidevice iphone sdk 01\" title=\"t064-uidevice-iphone-sdk-01\" width=\"320\" height=\"502\" class=\"aligncenter size-full wp-image-4053\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-01.jpg 320w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-01-191x300.jpg 191w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-01-95x150.jpg 95w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/a><br \/>\n<\/center><\/p>\n<p>Non ci resta che collegare questi oggetti ai rispettivi dichiarati poco fa nel file di interfaccia .h. Per farlo clicchiamo su &#8220;File&#8217;s Owner&#8221; e spostiamoci sul &#8220;Connections Inspector&#8221;, colleghiamo quindi i 4 &#8220;lbl&#8221; con le UILabel appena trascinate. Finiti i collegamenti salviamo e chiudiamo Interface Builder.<\/p>\n<p>A questo punto ci tocca implementare il codice vero e proprio che ci permetter\u00e0 di mostrare a video (nelle UILabel) i dati del dispositivo che sta eseguendo la nostra applicazione iPhone. Aprite il file &#8220;myDeviceViewController.m&#8221;, aggiungete i rispettivi @synthesize subito dopo l&#8217;istruzione &#8220;@implementation myDeviceViewController&#8221;<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n@synthesize lblModel, lblName, lblSystemName, lblSystemVersion;\r\n<\/pre>\n<p>Scommentate quindi il metodo &#8220;viewDidLoad&#8221; e modificatelo come segue:<\/p>\n<pre lang=\"objc\" line=\"1\" escaped=\"true\">\r\n- (void)viewDidLoad {\r\n        [super viewDidLoad];\r\n\t\r\n\tlblModel.text = [[UIDevice currentDevice] model];\r\n\tlblName.text = [[UIDevice currentDevice] name];\r\n\tlblSystemName.text = [[UIDevice currentDevice] systemName];\r\n\tlblSystemVersion.text = [[UIDevice currentDevice] systemVersion];\r\n}\r\n<\/pre>\n<p>Come vedete \u00e8 tutto molto semplice e non facciamo altro che andare a settare la propriet\u00e0 &#8220;text&#8221; delle UILabel con il rispettivo valore prelevato tramite [[UIDevice currentDevice] nomeValoreCheCiInteressa];<\/p>\n<p>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.<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-02.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-02.jpg\" alt=\"t064 uidevice iphone sdk 02\" title=\"t064-uidevice-iphone-sdk-02\" width=\"386\" height=\"742\" class=\"aligncenter size-full wp-image-4052\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-02.jpg 386w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/07\/t064-uidevice-iphone-sdk-02-156x300.jpg 156w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/a><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se lo sviluppo di applicazioni iPhone, per voi, \u00e8 qualcosa di pi\u00f9 di una semplice passione o&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[336,338,339,337,335,23],"class_list":["post-4051","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-currentdevice","tag-systemname","tag-systemversion","tag-tutorial-iphone","tag-uidevice","tag-xcode"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=4051"}],"version-history":[{"count":6,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4051\/revisions"}],"predecessor-version":[{"id":4061,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/4051\/revisions\/4061"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=4051"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=4051"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=4051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}