Возможный дубликат:
Определить устройство (iPhone, iPod Touch) с помощью iOS
Я делаю игру, которая использует возможности одноранговой связи iPhone (и, возможно, iPod touch 2-го поколения). Однако, чтобы пользователи не пытались играть в мультиплеер на iPod 1-го поколения и iPhone 2G, мне нужно проверить конкретную модель устройства.
[Модель [UIDevice currentDevice]] только скажет мне, является ли устройство "iPhone" или "iPod touch". Есть ли способ проверить для конкретной модели устройства, например: "iPhone 3GS", "iPod touch 1-го поколения" или что-то в этом роде.
РЕДАКТИРОВАТЬ:
В UIDevice есть категория (я думаю, что она создана Эрикой Садун, я не беру на себя ответственность за это), которая использует следующий код для получения конкретной модели устройства. Вы можете найти всю категорию здесь вместе с другими полезными материалами: https://github.com/erica/uidevice-extension
#include <sys/types.h>
#include <sys/sysctl.h>
@implementation UIDevice (Hardware)
/*
Platforms
iPhone1,1 -> iPhone 1G
iPhone1,2 -> iPhone 3G
iPod1,1 -> iPod touch 1G
iPod2,1 -> iPod touch 2G
*/
- (NSString *) platform
{
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);
return platform;
}
Это работает, и приложения, использующие это, были недавно одобрены в AppStore.