Подтвердить что ты не робот

Как узнать, работает ли ваш код на iPhone или iPhone3G?

Я пытаюсь определить, работает ли мой код на iPhone или iPhone3G. Моя первая попытка заключалась в том, чтобы использовать UIDevice-класс в UIKit, но оба iPhone и iPhone3G возвращают одни и те же ответы:

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

Это единственные параметры, которые UIDevice позволяет вам запрашивать.

Я немного посмотрел в Foundation Framework, но еще не нашел соответствующих вызовов.

Я уверен, что есть некоторые аппаратные средства, которые я мог бы запросить (например, что-то в службах определения местоположения), но это похоже на хак. Кто-нибудь знает простой способ определения этого?

4b9b3361

Ответ 1

iPhone работает под управлением ОС X. Ниже описано, как определить вашу аппаратную платформу на рабочем столе Macintosh. Вот как на iPhone. Это то же самое.

Короче говоря, sysctlbyname("hw.machine", str, sz, 0, 0) будет записывать имя платформы в str. Это, вероятно, "iPhone1,1" или "iPhone1,2" для iPhone и iPhone 3G соответственно.

Ответ 2

Я не разработчик iPhone, но проверка базовой платформы, а не возможностей платформы почти всегда является неправильным выбором. Если iPhone получит необходимую функциональность, вы все равно не сработаете. Также есть вероятность, что вы примете неверное решение на следующем iPhone 4.0 (или что бы там ни называлось).

Ответ 3

Мое предположение заключается в том, что на iPhone есть функциональность, которая не относится к iPhon3G, к которой относится ваше программное обеспечение. Мое предложение состоит в том, чтобы запросить об этом конкретном оборудовании вместо изменения поведения программного обеспечения на платформе.

Например. вместо того, чтобы проверять доступность GPS, спросив, это запрос iPhone или iPhone3G о доступности GPS и оттуда. Таким образом, ваш код будет работать на любой платформе (iphone/ipod touch/iphone 3G)