2012-09-12 58 views
0

我想获得iPad序列号?我发现有两种方法可以存档,第一种方法是使用uuid,但这不是最好的解决方案。因为我需要序列号,因为它站在iPad的背面。在iPad上获取序列号

另一个解决方案是实现一个过时的github项目:/

所以是不是可以检索的序列号,印在了iPad的后面?

如果这是不可能的,这是因为序号受到了某种程度的保护,所以我不能错过使用它?

[UPDATE] 如果无法获取序列号,是否可以获取设备名称呢?

在此先感谢:)

+0

最新消息?你想为每个设备获得独特的东西或获取序列号? –

+0

它的独特之处并不重要。我只需要一种简单的方法来识别设备,因此用户可以轻松地将设备添加到我们的数据库中。这可能是名称或序列号,只是用户可以在他的设备上读取的简单ID。 – DNRN

回答

0

可以检索iOS设备的序列号。但我不确定苹果是否允许进入AppStore的应用程序。

您将需要这些进口:

#import <sys/utsname.h> 
#import <dlfcn.h> 

下面的方法将检索设备序列号

+(NSString *) getSerialNumber 
{ 
    NSString *serialNumber = nil; 

    void *IOKit = dlopen("/System/Library/Frameworks/IOKit.framework/IOKit", RTLD_NOW); 
    if (IOKit) 
    { 
     mach_port_t *kIOMasterPortDefault = dlsym(IOKit, "kIOMasterPortDefault"); 
     CFMutableDictionaryRef (*IOServiceMatching)(const char *name) = dlsym(IOKit, "IOServiceMatching"); 
     mach_port_t (*IOServiceGetMatchingService)(mach_port_t masterPort, CFDictionaryRef matching) = dlsym(IOKit, "IOServiceGetMatchingService"); 
     CFTypeRef (*IORegistryEntryCreateCFProperty)(mach_port_t entry, CFStringRef key, CFAllocatorRef allocator, uint32_t options) = dlsym(IOKit, "IORegistryEntryCreateCFProperty"); 
     kern_return_t (*IOObjectRelease)(mach_port_t object) = dlsym(IOKit, "IOObjectRelease"); 

     if (kIOMasterPortDefault && IOServiceGetMatchingService && IORegistryEntryCreateCFProperty && IOObjectRelease) 
     { 
      mach_port_t platformExpertDevice = IOServiceGetMatchingService(*kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")); 
      if (platformExpertDevice) 
      { 
       CFTypeRef platformSerialNumber = IORegistryEntryCreateCFProperty(platformExpertDevice, CFSTR("IOPlatformSerialNumber"), kCFAllocatorDefault, 0); 
       if (CFGetTypeID(platformSerialNumber) == CFStringGetTypeID()) 
       { 
        serialNumber = [NSString stringWithString:(__bridge NSString*)platformSerialNumber]; 
        CFRelease(platformSerialNumber); 
       } 
       IOObjectRelease(platformExpertDevice); 
      } 
     } 
     dlclose(IOKit); 
    } 
    return serialNumber; 
} 

获取名称被配置在设置是很容易的设备。尝试以下方法。

+(NSString *) getDeviceName 
{ 
    //RETURNS THE DEVICE NAME CONFIGURED IN SETTINGS 
    NSString *nameString = [[UIDevice currentDevice] name]; 
    return nameString; 
}