获得设备的唯一标识符UDID
2024-08-24 11:36:35
在IOS5之后,苹果为避免根据UDID获得用户的信息,而禁止使用uniqueIdentifier获得UDID,但是仍有些应用需要根据UDID区分设备
有一个系统的库IOKit.framework可以获得设备的唯一标识
NSString *serialNumber = nil; NSString * path = [[NSBundle mainBundle]pathForResource:@"IOKit.framework" ofType:nil]; const char * a =[path UTF8String]; // void *IOKit = dlopen(a, RTLD_NOW); 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("IOPlatformUUID"), kCFAllocatorDefault, ); if (CFGetTypeID(platformSerialNumber) == CFStringGetTypeID()) { serialNumber = [NSString stringWithString:(__bridge NSString*)platformSerialNumber]; CFRelease(platformSerialNumber); } IOObjectRelease(platformExpertDevice); } } dlclose(IOKit); } return serialNumber;
但是这个方法只能获得模拟器上的UDID很坑爹啊
那还有另外的方法获得设备的信息,那就是走苹果的MDM
详情参考http://www.cnblogs.com/liyy2015/p/6030032.html
最新文章
- Entity Framework 6 Recipes 2nd Edition(9-3)译->;找出Web API中发生了什么变化
- 你知道JavaScript中的结果值是什么吗?
- div垂直居中的几种方法
- SQL 查询所有表名、字段名、类型、长度、存储过程、视图
- Vijos P1459 车展 treap求任意区间中位数
- [vim] vim入门
- java在url传输前更改字符编码
- 设置TOMCAT的JVM虚拟机内存大小
- [复变函数]第10堂课 3.2 Cauchy 积分定理
- Selenium2Library系列 keywords 之 _SelectElementKeywords
- BZOJ 4311: 向量( 按时间分治 + 线段树 )
- HttpClient, HttpClientHandler, and WebRequestHandler介绍
- HDU 3001 Travelling:TSP(旅行商)【节点最多经过2次】
- redis服务问题解决办法
- 【转】详解在visual studio中使用git版本系统(图文)
- 生日蛋糕 POJ - 1190 搜索 数学
- vi/vim 命令速查手册
- Mysql-基础+安装指南
- js怎样得出数组中某个数据最大连续出现的次数
- wordpress | 网站访问速度优化方案(Avada)
热门文章
- Pramp mock interview (4th practice): Matrix Spiral Print
- Hyper-V上运行的Linux虚拟机验证是否安装了集成服务
- centos 7 安装mono 和 monodevelop
- 在Mac OS X上安装ASP.NET 5(译文)
- CSharpGL(9)解析OBJ文件并用CSharpGL渲染
- egret调用页面js的方法。
- exportfs 入门/ 错误
- Android开发学习之路-关于Exception
- 判断一个值是否为null或者undefined
- Vertica集群扩容实验过程记录