iOS获取机器SerialNumber

/**

* 获取用户手机序列号

*/

+ (NSString *)serialNumber

{

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;

}

iOS获取机器SerialNumber,布布扣,bubuko.com

时间: 2024-10-27 18:01:43

iOS获取机器SerialNumber的相关文章

IOS 获取,如电量,CPU,型号等

IOS 获取,如电量,CPU,型号等 电池信息可以从UIDevice batteryLevel得到,但是只能精确到0.05.- (NSDictionary*)batteryLevel{CFTypeRef blob = IOPSCopyPowerSourcesInfo();        CFArrayRef sources = IOPSCopyPowerSourcesList(blob);                CFDictionaryRef pSource = NULL;       

iOS获取手机相关信息

iOS具体的设备型号: #include <sys/types.h> #include <sys/sysctl.h> - (void)test { //手机型号. size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = (char*)malloc(size); sysctlbyname("hw.machine", machine, &

iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?

iOS获取设备唯一标识的各种方法?IDFA.IDFV.UDID分别是什么含义? [摘要:1.UDID (Unique Device Identifier) UDID的齐称是Unique Device Identifier,望文生义,它便是苹果IOS装备的独一辨认码,它由40个字符的字母战数字构成.正在良多须要限定] 一.UDID (Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由

检测SDWebImage有没有缓存图片 IOS 获取网络图片大小

NSURL *url = [NSURL URLWithString:[model.content objectForKey:@"image"]];             //请求网络地址数据的同步方法             //因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题             SDWebImageManager *manager = [SDWebImageManager sharedManager];              [manag

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

iOS获取本地视频和网络URL视频的缩略图方法

iOS获取本地视频和网络URL视频的缩略图方法 字数222 阅读612 评论0 喜欢13 首先大家先添加AVFoundation和CoreMedia.framework两个框架 第一种本地视频获取缩略图 NSString *path = @"www.51ios.net/本地路径" MPMoviePlayerController *51iosMPMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileU

ios 获取屏幕的属性和宽度

1.app尺寸,去掉状态栏 CGRect r = [ UIScreen mainScreen ].applicationFrame; r=0,20,320,460 另外:self.view.bounds.size 2.屏幕尺寸 CGRect rx = [ UIScreen mainScreen ].bounds; r=0,0,320,480 3.状态栏尺寸 CGRect rect; rect = [[UIApplication sharedApplication] statusBarFrame]

ios 获取当前视图第一响应者

Football on Table 题意:一些杆上有人,人有一个宽度,然后现在有一个球射过去,要求出球不会碰到任何人的概率 思路:计算出每根杆的概率,之后累乘,计算杆的概率的时候,可以先把每块人的区间长度再移动过程中会覆盖多少长度累加出来,然后(1?总和/可移动距离)就是不会碰到的概率 代码: #include <stdio.h> #include <string.h> #include <math.h> const double eps = 1e-8; int t,

iOS 获取当前时间格式化字符串

iOS 获取当前时间格式化字符串 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. // 获取系统当前时间 NSDate * date = [NSDate date]; NSDateFormatt