【问题标题】:How do you get the device serial number in iOS 8?如何在 iOS 8 中获取设备序列号?
【发布时间】: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


【解决方案1】:

因为 platformSerialNumber 为 nil 而崩溃。

从 iOS 8 Beta 5 开始,IOPlatformSerialNumber 属性已被移除,检索其值的调用现在返回 nil。

【讨论】:

  • 更正问题所在的 IORegistryEntryCreateCFProperty
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多