Cum să-i spuneți dacă codul rulează pe un iPhone sau un iPhone3G?

voturi
22

Am încercat să determine dacă codul meu rulează pe un iPhone sau un iPhone3G. Prima mea încercare a fost de a utiliza clasa UIDevice în UIKit, dar ambele iPhone și iPhone3G reveni aceleași răspunsuri:

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

Acestea sunt singurii parametrii pe care UIDevice vă permite să interogați.

M-am uitat un pic în cadru Fundația, dar nu au găsit încă apelurile corespunzătoare.

Sunt sigur că există unele bucată de hardware am putut interogare (cum ar fi ceva în serviciile de localizare), dar care pare ca un hack. Stie cineva un simplu mod de a determina acest lucru?

Întrebat 27/03/2009 la 01:01
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
21

IPhone ruleaza OS X. Iată cum de a determina platforma hardware pe un desktop Macintosh. Iată cum pe un iPhone. Este exact același lucru.

Pe scurt, se sysctlbyname("hw.machine", str, sz, 0, 0)va scrie numele platformei în str. Acest lucru se întâmplă să fie „iPhone1,1“ sau „iPhone1,2“ pentru iPhone și , respectiv , iPhone 3G.

Publicat 27/03/2009 la 02:19
sursa de către utilizator

voturi
6

Nu sunt un dezvoltator iPhone, dar verificarea pentru platforma de bază în loc de capacitățile platformei este aproape întotdeauna alegerea greșită. În cazul în care iPhone câștigă funcționalitatea care aveți nevoie, nu va reuși în continuare pentru a rula. Există, de asemenea, o șansă vei lua decizia greșită cu privire la următorul iPhone 4.0 (sau orice ar fi numit).

Publicat 27/03/2009 la 01:43
sursa de către utilizator

voturi
0

Părerea mea este că există o funcționalitate pe iPhone, care nu se află pe iPhon3G că software-ul este preocupat. Sugestia mea este de a interoga cu privire la faptul că hardware-ul specific în loc de a schimba comportamentul de software bazat pe platforma.

De exemplu. în loc de a verifica pentru availibility GPS solicitând este aceasta o interogare iPhone sau iPhone3G despre disponibilitatea GPS și du-te de acolo. În acest fel, codul va funcționa pe orice platformă (iPhone / iPod Touch / iPhone 3G)

Publicat 27/03/2009 la 01:49
sursa de către utilizator

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