Как вы обнаруживаете iPhone v. IPhone 3G, используя Obj C - PullRequest
2 голосов
/ 24 апреля 2009

Существует свойство модели устройства, но оно не различает iPhone и iPhone 3G. Есть ли лучший способ?

Ответы [ 4 ]

3 голосов
/ 24 апреля 2009

Особенно интересными частями проекта, которые опубликовал Стефан, являются:

Строковые значения, которые вы, вероятно, увидите:

/*
 Platforms
 iPhone1,1 -> iPhone 1G
 iPhone1,2 -> iPhone 3G 
 iPod1,1   -> iPod touch 1G 
 iPod2,1   -> iPod touch 2G 
*/

Как получить одно из этих значений:

size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);

NSString *platform = [NSString stringWithCString:machine encoding: NSUTF8StringEncoding];

free(machine);

Затем вы можете проверить начало платформы на @"iPhone" или @"iPod" и сказать, есть ли у вас устройство с GPS или нет. Я бы не советовал сопоставлять всю строку с тем, что вы хотите, потому что в следующий раз, когда появится устройство (например, этим летом, скорее всего), вы не сможете сопоставить его без изменения кода.

Кроме того, если вы их еще не видели, у Эрики Садун (автора проекта) есть несколько отличных статей по разработке для iPhone на ArsTechnica.com и по крайней мере одна книга об этом.

1 голос
/ 24 апреля 2009

Смотрите здесь:

ars / uidevice-extension

0 голосов
/ 11 октября 2009

на самом деле они могут использовать код только для того, чтобы обнаружить модель, которая этого не делает, и предположить, что она есть у всех других моделей

таким образом, им не придется менять код в будущем, если только они не выпустят iPhone, у которого снова нет GPS ...

также --- в ответ на Oregon Ghost - есть много особенностей (bluetooth - это еще одна вещь, о которой я могу подумать), которую SDK не предоставляет для обнаружения ....

0 голосов
/ 25 апреля 2009

Похоже, вы пытаетесь решить не ту проблему здесь. Вы действительно не хотите знать, используете ли вы iPhone 3G или оригинальный iPhone. Если вы пишете код, который пытается определить, имеет ли устройство аппаратное обеспечение GPS на основе его модели, вам придется изменить его при появлении новой модели (например, iPod Touch с GPS или нового нетбука с GPS или iPhone 3G Nano без GPS).

Из вашего описания неясно, почему вы думаете, что вам нужно заботиться о том, имеет ли устройство аппаратное обеспечение GPS или нет. Вы можете получить информацию о местоположении от CoreLocation, и она включает измерение точности. Просто используйте это, и если точность не достаточно высока, сообщите пользователю.

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