Hoe te vertellen als je code wordt uitgevoerd op een iPhone of een iPhone3G?

stemmen
22

Ik probeer om te bepalen of mijn code wordt uitgevoerd op een iPhone of een iPhone3G. Mijn eerste poging was om de UIDevice klasse in UIKit gebruiken, maar zowel de iPhone en iPhone3G terug te keren dezelfde reacties:

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

Dat zijn de enige parameters die UIDevice kunt u opvragen.

Ik zag er een beetje in Framework Foundation, maar nog niet gevonden de juiste gesprekken.

Ik weet zeker dat er een stukje hardware dat ik kon opvragen (zoals iets in locatiediensten), maar dat lijkt een hack. Weet iemand een eenvoudig manier om te bepalen dit?

De vraag is gesteld op 27/03/2009 om 01:01
bron van user
In andere talen...                            


3 antwoorden

stemmen
21

De iPhone loopt OS X. Hier is hoe u uw hardware platform vast te stellen op een Macintosh-bureaublad. Hier is hoe op een iPhone. Het is precies dezelfde zaak.

In het kort, sysctlbyname("hw.machine", str, sz, 0, 0)zal de naam platform in te schrijven str. Dit gebeurt te zijn "iPhone1,1" of "iPhone1,2" voor respectievelijk de iPhone en iPhone 3G.

antwoordde op 27/03/2009 om 02:19
bron van user

stemmen
6

Ik ben niet een iPhone-ontwikkelaar, maar het controleren op het onderliggende platform in plaats van het platform mogelijkheden is bijna altijd de verkeerde keuze. Als de iPhone de functionaliteit die u nodig heeft krijgt, zal je nog steeds niet worden uitgevoerd. Er is ook een kans dat je de verkeerde beslissing over de volgende iPhone 4.0 (of wat het ook wordt genoemd) te maken.

antwoordde op 27/03/2009 om 01:43
bron van user

stemmen
0

Mijn gok is dat er functionaliteit op de iPhone die niet op de iPhon3G dat uw software houdt zich bezig met. Mijn suggestie is om te vragen over dat specifieke hardware in plaats van het veranderen van het gedrag van software op basis van het platform.

Bijvoorbeeld. in plaats van het controleren van de beschikbaarheid van GPS door te vragen is dit een iPhone of iPhone3G vraag over de beschikbaarheid van de GPS en ga vanaf daar. Op die manier uw code zal werken op elk platform (iPhone / iPod Touch / iPhone 3G)

antwoordde op 27/03/2009 om 01:49
bron van user

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