【发布时间】:2014-09-19 19:50:41
【问题描述】:
下面的方法使用 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:]: data is NULL
【问题讨论】:
-
可能想要显示崩溃的代码。
-
粗略地尝试谷歌搜索似乎并不乐观。 Apple 认为这是对隐私的侵犯,因此他们不支持将其作为一项功能。您最好按用户识别。
标签: ios8 device iokit serial-number