你如何以编程方式获取iPhone的序列号?

时间:2009-04-16 13:25:07

标签: iphone objective-c

我想知道使用我的应用程序的iPhone的序列号。我在下面写了代码。

- (NSString*)getSerialNumber
{
 CFTypeRef serialNumberAsCFString;

 io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"));

 if (platformExpert)
 {
     serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert, CFSTR(kIOPlatformUUIDKey), kCFAllocatorDefault, 0);
 }

 IOObjectRelease(platformExpert);

 NSString *serial = [[NSString alloc] initWithFormat:@"%@",serialNumberAsCFString];

    NSLog(@"serail no==>%@",serialNumberAsCFString);
    NSLog(@"serail no==>%@",serial);
}

为什么我的序列号仍然错误?

3 个答案:

答案 0 :(得分:5)

您应该将IORegistryEntryCreateCFProperty的参数2从CFSTR (kIOPlatformUUIDKey)更改为CFSTR (kIOPlatformSerialNumberKey)。然后您将获得正确的序列号(长度为11个字符)。

答案 1 :(得分:2)

您是否正在链接IOKit框架?

试试

id getValue(NSString *iosearch);

功能,可在

获取

http://blogs.oreilly.com/iphone/2008/08/retrieving-device-information.html

您还可以使用UIDevice类检索其他有用信息 例如,你可以这样做:

NSString *id = [[UIDevice currentDevice] uniqueIdentifier];

其他有用的属性如下:

  name  
  systemName    
  systemVersion  
  model  
  localizedModel  

答案 2 :(得分:0)

准备在UIDevice上使用类别:UIDevice+serialNumber。不确定这将在App Store上被接受。