Как программно получить серийный номер iPhone? - PullRequest
10 голосов
/ 16 апреля 2009

Я хочу узнать серийный номер моего 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);
}

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

Ответы [ 3 ]

5 голосов
/ 08 декабря 2009

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

2 голосов
/ 16 апреля 2009

Связываете ли вы фреймворк 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  
0 голосов
/ 06 сентября 2010

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

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