¿Cómo saber si su código se ejecuta en un iPhone o un iPhone3G?

votos
22

Estoy tratando de determinar si mi código se está ejecutando en un iPhone o un iPhone3G. Mi primer intento fue usar la clase UIDevice en UIKit, pero tanto iPhone como iPhone3G devolvieron las mismas respuestas:

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

Esos son los únicos parámetros que UIDevice le permite consultar.

Miré un poco en Foundation Framework pero aún no he encontrado las llamadas apropiadas.

Estoy seguro de que hay alguna pieza de hardware que podría consultar (como algo en los servicios de localización) pero parece un truco. ¿Alguien sabe una manera simple de determinar esto?

Publicado el 27/03/2009 a las 01:01
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
21

El iPhone ejecuta OS X. Aquí se explica cómo determinar su plataforma de hardware en un escritorio Macintosh. Así es como en un iPhone. Es lo mismo.

En resumen, sysctlbyname("hw.machine", str, sz, 0, 0)escribirá el nombre de la plataforma en str. Esto pasa a ser "iPhone1,1" o "iPhone1,2" para iPhone y iPhone 3G, respectivamente.

Respondida el 27/03/2009 a las 02:19
fuente por usuario

votos
6

No soy un desarrollador de iPhone, pero buscar la plataforma subyacente en lugar de las capacidades de la plataforma casi siempre es la opción incorrecta. Si el iPhone obtiene la funcionalidad que necesita, seguirá sin poder ejecutar. También existe la posibilidad de que tome una decisión incorrecta en el próximo iPhone 4.0 (o como se llame).

Respondida el 27/03/2009 a las 01:43
fuente por usuario

votos
0

Mi suposición es que hay una funcionalidad en el iPhone que no está en el iPhon3G que le preocupa a su software. Mi sugerencia es consultar sobre ese hardware específico en lugar de cambiar el comportamiento del software según la plataforma.

Por ejemplo. en lugar de verificar la disponibilidad del GPS al preguntar, se trata de una consulta de iPhone o iPhone3G sobre la disponibilidad del GPS e ir desde allí. De esa forma su código funcionará en cualquier plataforma (iphone / ipod touch / iphone 3G)

Respondida el 27/03/2009 a las 01:49
fuente por usuario

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