2009-04-16 3 views
10

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

- (NSString*)getSerialNumber 
{ 
CFTypeRef serialNumberAsCFString; 

io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")); 

if (platformExpert) 
{ 
    serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, 0); 
} 

IOObjectRelease(platformExpert); 

NSString *serial = [[NSString alloc] initWithFormat:@"%@",serialNumberAsCFString]; 

    NSLog(@"serail no==>%@",serialNumberAsCFString); 
    NSLog(@"serail no==>%@",serial); 
} 

Почему я по-прежнему получаю неправильный серийный номер?

+1

Что значит «неправильный серийный номер»? Разве это не появляется, или просто неверно? –

+0

Вам нужен серийный номер или UUID? Apple сообщает, что UUID является уникальным среди всех устройств и что вы должны использовать такой номер, а не серийный номер устройства. – balexandre

+1

- это то, что принято Apple Store? – iKT

ответ

2

Вы связываете структуру IOKit?

Попробуйте функцию

id getValue(NSString *iosearch); 

, доступный на

http://blogs.oreilly.com/iphone/2008/08/retrieving-device-information.html

Вы также можете использовать класс UIDevice, чтобы получить другую полезную информацию Например, вы можете сделать:

NSString *id = [[UIDevice currentDevice] uniqueIdentifier]; 

Прочее использованиеf ул свойства являются следующие:

name 
    systemName  
    systemVersion 
    model 
    localizedModel 
+0

ok Я попробовал этот код, но мое приложение было отменено неправильно и дало мне предупреждения в 3-х местах: 1) CFTypeId propID = NULL; (Указатель без броска) 2) CFTypeRef проп = IORegistryEntrySearchCFProperty (вход, \t \t \t \t \t \t \t \t \t \t \t \t \t kIODeviceTreePlane, iosearch, ноль, \t \t \t \t \t \t \t \t \t \t \t \t \t kIORegistryIterateRecursively); (предупреждение: прохождение аргумента 3 из «IORegistryEntrySearchCFProperty» из несовместимого указателя типа ) – 2009-04-17 05:52:35

5

Вы должны изменить аргумент 2 из IORegistryEntryCreateCFProperty от CFSTR (kIOPlatformUUIDKey) до CFSTR (kIOPlatformSerialNumberKey). Затем вы получите правильный серийный номер (длиной 11 символов).

0

Готов к использованию категория на UIDevice: UIDevice+serialNumber. Не уверен, что это будет принято в App Store.

Смежные вопросы