如何在iOS 8中获取设备序列号?

时间:2014-09-19 19:50:41

标签: ios8 device iokit serial-number

下面的方法使用IOKit获取设备序列号,但现在使用iOS 8会崩溃应用程序。有谁知道这方面的工作?我有大量公司拥有的公共可用设备,其企业应用程序不是用于提交应用程序商店,而是使用序列号来唯一标识设备。

CFTypeRef platformSerialNumber = IORegistryEntryCreateCFProperty(platformExpertDevice, CFSTR("IOPlatformSerialNumber"), kCFAllocatorDefault, 0);
if (CFGetTypeID(platformSerialNumber) == CFStringGetTypeID())
{
     serialNumber = [NSString stringWithString:(__bridge NSString*)platformSerialNumber];
     CFRelease(platformSerialNumber);
}
IOObjectRelease(platformExpertDevice);

它在带有EXC_BAD_ACCESS的CFGetTypeID上崩溃。

控制台日志: * - [NSKeyedUnarchiver initForReadingWithData:]:数据为NULL

1 个答案:

答案 0 :(得分:2)

崩溃是因为platformSerialNumber为nil。

自iOS 8 Beta 5起,IOPlatformSerialNumber属性已被删除,现在检索其值的调用将返回nil。