Ответ 1
Вы должны изменить аргумент 2 IORegistryEntryCreateCFProperty
от CFSTR (kIOPlatformUUIDKey)
до CFSTR (kIOPlatformSerialNumberKey)
. Затем вы получите правильный серийный номер (длиной 11 символов).
Я хочу узнать серийный номер моего 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);
}
Почему я по-прежнему получаю неправильный серийный номер?
Вы должны изменить аргумент 2 IORegistryEntryCreateCFProperty
от CFSTR (kIOPlatformUUIDKey)
до CFSTR (kIOPlatformSerialNumberKey)
. Затем вы получите правильный серийный номер (длиной 11 символов).
Вы связываете структуру 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
Готов к использованию категории в UIDevice: UIDevice + serialNumber. Не уверен, что это будет принято в App Store.