Come dire se il codice è in esecuzione su un iPhone o un iPhone3G?

voti
22

Sto cercando di determinare se il mio codice è in esecuzione su un iPhone o un iPhone3G. Il mio primo tentativo è stato quello di utilizzare la classe UIDevice in UIKit, ma entrambi iPhone e iPhone3G restituire le stesse risposte:

NSLog([[UIDevice currentDevice] name]); // Name of the phone as named by user
NSLog([[UIDevice currentDevice] uniqueIdentifier]); // A GUID like string
NSLog([[UIDevice currentDevice] systemName]); // iPhone OS 
NSLog([[UIDevice currentDevice] systemVersion]); // 2.2.1
NSLog([[UIDevice currentDevice] model]); // iPhone on both devices
NSLog([[UIDevice currentDevice] localizedModel]); // iPhone on both devices

Questi sono gli unici parametri che UIDevice permette di interrogare.

Ho guardato un po 'in quadro Fondazione, ma non ho ancora trovato le chiamate appropriate.

Sono sicuro che ci sia qualche pezzo di hardware ho potuto interrogare (come ad esempio qualcosa in servizi di localizzazione), ma che sembra un hack. Qualcuno sa un semplice modo di determinare questo?

È pubblicato 27/03/2009 alle 01:01
fonte dall'utente
In altre lingue...                            


3 risposte

voti
21

L'iPhone funziona OS X. Ecco come determinare la piattaforma hardware su un desktop Macintosh. Ecco come su un iPhone. E 'la stessa cosa esatta.

In breve, sysctlbyname("hw.machine", str, sz, 0, 0)scriverà il nome della piattaforma in str. Questo sembra essere "iPhone1,1" o "iPhone1,2" per iPhone e iPhone 3G, rispettivamente.

Risposto il 27/03/2009 a 02:19
fonte dall'utente

voti
6

Io non sono uno sviluppatore iPhone, ma il controllo per la piattaforma sottostante, invece di funzionalità della piattaforma è quasi sempre la scelta sbagliata. Se l'iPhone guadagna le funzionalità necessarie, si continua a non riuscire a correre. C'è anche una possibilità che farete la decisione sbagliata sul prossimo iPhone 4.0 (o quello che è chiamato).

Risposto il 27/03/2009 a 01:43
fonte dall'utente

voti
0

La mia ipotesi è che ci sia la funzionalità su iPhone che non è sul iPhon3G che il software si occupa. Il mio suggerimento è quello di interrogare su questo hardware specifico, invece di cambiare il comportamento del software basato sulla piattaforma.

Per esempio. invece di controllare per la Disponibilità di GPS chiedendo è questa una query o iPhone iPhone3G sulla disponibilità del GPS e passare da lì. In questo modo il codice funzionerà su qualsiasi piattaforma (iPhone / iPod Touch / iPhone 3G)

Risposto il 27/03/2009 a 01:49
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more