Wie kann man sagen, wenn Ihr Code auf einem iPhone oder einem iPhone3G ausgeführt wird?

stimmen
22

Ich versuche, um zu bestimmen, ob mein Code auf einem iPhone oder einen iPhone3G ausgeführt wird. Mein erster Versuch war die UIDevice Klasse in UIKit zu verwenden, aber beide iPhone und iPhone3G Rück die gleichen Antworten:

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

Das sind die einzigen Parameter, die UIDevice können Sie abfragen.

Ich sah ein bisschen in Foundation-Framework, aber noch nicht die entsprechenden Anrufe gefunden.

Ich bin sicher, es gibt einige Stück Hardware I (wie etwas in standortbezogene Dienste) abfragen können, aber das scheint wie ein Hack. Kennt jemand eine einfach Möglichkeit, dies zu bestimmen?

Veröffentlicht am 27/03/2009 um 01:01
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
21

Das iPhone läuft OS X. Hier ist , wie Sie Ihre Hardware - Plattform auf einem Macintosh - Desktop zu bestimmen. Hier ist , wie auf einem iPhone. Es ist genau die gleiche Sache.

Kurz gesagt, sysctlbyname("hw.machine", str, sz, 0, 0)wird die Plattform Namen in schreiben str. Dies geschieht jeweils „iPhone1,1“ oder „iPhone1,2“ für das iPhone und iPhone 3G zu sein.

Beantwortet am 27/03/2009 um 02:19
quelle vom benutzer

stimmen
6

Ich bin nicht ein iPhone-Entwickler, sondern von Plattform-Funktionen für die zugrunde liegende Plattform Überprüfung ist fast immer die falsche Wahl. Wenn das iPhone die Funktionalität gewinnt die Sie benötigen, werden Sie noch nicht ausgeführt. Es gibt auch eine Chance, dass Ihr die falsche Entscheidung auf dem nächsten iPhone 4.0 (oder was auch immer sie genannt wird) machen.

Beantwortet am 27/03/2009 um 01:43
quelle vom benutzer

stimmen
0

Meine Vermutung ist, dass es Funktionen auf dem iPhone ist, die nicht auf dem iPhon3G ist, dass Ihre Software mit betroffen ist. Mein Vorschlag ist, über die spezifische Hardware anstelle der Änderung des Softwareverhaltens auf der Plattform basierend abzufragen.

Beispielsweise. anstelle die Prüfung für die Verfügbarkeit von GPS mit der Frage, ist dies ein iPhone oder iPhone3G Abfrage über die Verfügbarkeit der GPS und geht von dort aus. Auf diese Weise Ihren Code auf jeder Plattform (iPhone / iPod touch / iphone 3G) arbeiten

Beantwortet am 27/03/2009 um 01:49
quelle vom benutzer

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