Как вы программно получаете серийный номер 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

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

Ответ 2

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

Попробуйте

id getValue(NSString *iosearch);

доступный в

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

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

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

Другими полезными свойствами являются следующие:

  name  
  systemName    
  systemVersion  
  model  
  localizedModel  

Ответ 3

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