Как определить, работает ли ваш код на iPhone или iPhone3G? - PullRequest
22 голосов
/ 27 марта 2009

Я пытаюсь определить, работает ли мой код на 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, но еще не нашел подходящих вызовов.

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

Ответы [ 3 ]

21 голосов
/ 27 марта 2009

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

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

6 голосов
/ 27 марта 2009

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

0 голосов
/ 27 марта 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...