下面的方法使用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
答案 0 :(得分:2)
崩溃是因为platformSerialNumber为nil。
自iOS 8 Beta 5起,IOPlatformSerialNumber属性已被删除,现在检索其值的调用将返回nil。