可以检索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;
}
最新消息?你想为每个设备获得独特的东西或获取序列号? –
它的独特之处并不重要。我只需要一种简单的方法来识别设备,因此用户可以轻松地将设备添加到我们的数据库中。这可能是名称或序列号,只是用户可以在他的设备上读取的简单ID。 – DNRN