Comment savoir si votre code est en cours d'exécution sur un iPhone ou un iPhone 3G?

voix
22

Je suis en train de déterminer si mon code est en cours d'exécution sur un iPhone ou un iPhone 3G. Mon premier essai était d'utiliser la classe UIDevice UIKit, mais l'iPhone et l'iPhone 3G revenir les mêmes réponses:

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

Ce sont les seuls paramètres qui UIDevice vous permet d'interroger.

J'ai regardé un peu dans Framework Foundation, mais ne l'ai pas encore trouvé les appels appropriés.

Je suis sûr qu'il ya un morceau de matériel que je pourrais interroger (comme quelque chose dans les services de localisation), mais qui semble comme un hack. Est-ce que quelqu'un sait simplement une façon de déterminer cela?

Créé 27/03/2009 à 01:01
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
21

L'iPhone fonctionne OS X. Voici comment déterminer votre plate - forme matérielle sur un ordinateur de bureau Macintosh. Voici comment sur un iPhone. Il est exactement la même chose.

Bref, sysctlbyname("hw.machine", str, sz, 0, 0)va écrire le nom de la plate - forme en str. Cela arrive à être « iPhone1,1 » ou « iPhone1,2 » pour l'iPhone et l' iPhone 3G , respectivement.

Créé 27/03/2009 à 02:19
source utilisateur

voix
6

Je ne suis pas un développeur iPhone, mais la vérification de la plate-forme sous-jacente à la place des capacités de la plate-forme est presque toujours le mauvais choix. Si l'iPhone gagne la fonctionnalité dont vous avez besoin, vous toujours pas à courir. Il y a aussi une chance que vous allez faire la mauvaise décision sur le prochain iPhone 4.0 (ou peu importe son nom).

Créé 27/03/2009 à 01:43
source utilisateur

voix
0

Je suppose qu'il ya fonctionnalité sur l'iPhone qui ne sont pas sur le iPhon3G que votre logiciel concerne. Ma suggestion est d'interroger sur ce matériel spécifique au lieu de changer le comportement du logiciel basé sur la plate-forme.

Par exemple. au lieu de vérifier la disponibilité du GPS en demandant est-ce une requête ou iPhone iPhone3G sur la disponibilité du GPS et aller de là. De cette façon, votre code fonctionnera sur toute plate-forme (iphone / iPod touch / iPhone 3G)

Créé 27/03/2009 à 01:49
source utilisateur

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