下面的方法使用 IOKit 来获取设备序列号,但现在使用 iOS 8 它会使应用程序崩溃。有没有人知道解决这个问题?我有大量企业拥有的公共(public)可用设备,其中包含不用于应用商店提交的企业应用程序,它们使用序列号来唯一标识设备。
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:]: data is NULL
最佳答案
它崩溃是因为 platformSerialNumber 为零。
从 iOS 8 Beta 5 开始,IOPlatformSerialNumber 属性被移除,检索其值的调用现在返回 nil。
关于ios8 - iOS 8 中如何获取设备序列号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25941418/