在iOS7之前, 可以方便的使用 [[UIDevice currentDevice] uniqueIdentifier] 来获取设备的UDID,但是在iOS7之后这个方法不再适用。

你可以用[[UIDevicecurrentDevice]valueForKey:@"uniqueIdentifier"];来获取到一个值,但这个值在iOS7中已经变成了FFFFFF+IDFV的值,显然,这个值并不能唯一标识设备。

再谈一谈IMEI,这个值好像在5.0的sdk中就不见了,私有库Message.framework的MFNetworkController.h中去掉了这个方法。

本以为iOS7及以上系统无法再获取到这些值,但看看别人Cydia,不是取得好好的吗?参考了一下Cydia的源码:

MobileCydia.mm

可以看到它使用了libMobileGestalt.dylib这个动态库,下面说一说具体如何操作。

1、导入libMobileGestalt.dylib库

2、加入声明

  1. OBJC_EXTERNCFStringRef MGCopyAnswer(CFStringRef key) WEAK_IMPORT_ATTRIBUTE;

3、使用如下方法获取

  1. CFStringRef UDID = MGCopyAnswer(CFSTR("UniqueDeviceID"));
  2. CFStringRef IMEI =MGCopyAnswer(CFSTR("InternationalMobileEquipmentIdentity"));
  3. CFStringRefserialNumber = MGCopyAnswer(CFSTR("SerialNumber"));
  1. CFArrayRef ICCIDArray =MGCopyAnswer(CFSTR("CarrierBundleInfoArray"));
  2. CFDictionaryRef ICCIDDic =CFArrayGetValueAtIndex(ICCIDArray, 0);
  3. CFStringRef ICCID  =CFDictionaryGetValue(ICCIDDic, CFSTR("IntegratedCircuitCardIdentity"));
  1. CFStringRefwifiAddress = MGCopyAnswer(CFSTR("WifiAddress"));
  2. CFStringRefbluetoothAddress = MGCopyAnswer(CFSTR("BluetoothAddress"));
  3. CFStringRefCPUArchitecture = MGCopyAnswer(CFSTR("CPUArchitecture"));
  4. CFStringRefproductType = MGCopyAnswer(CFSTR("ProductType"));
  5. CFTypeRefairplaneMode = MGCopyAnswer(CFSTR("AirplaneMode"));
  6. if (airplaneMode ==kCFBooleanTrue) { ... }

4、经过测试发现这些方法在iOS7以下不用越狱就能取到、在iOS7中需要越狱并创建xxx.entitlements文件,添加如下权限

5、在BuildSettings的Code SigningEntitlements中添加刚才创建的文件xxx.entitlements

6、编译运行

7、附上demo工程

http://download.csdn.net/detail/ookcode/8247495

8、我的环境

Xcode 6.1

iOS 8.1 SDK

OS X 10.9.5

获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息的更多相关文章

  1. unity基础开发----Unity获取PC,Ios系统的mac地址等信息

    在软件开发中可以会用到mac地址作为,设备的唯一标示,我们也可以通过unity获取,经测试pc,ios都可以但是安卓没有获取到. 代码如下: using UnityEngine; using Syst ...

  2. 获得Unix/Linux系统中的IP、MAC地址等信息

    获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 ...

  3. 查询局域网内全部电脑IP和mac地址等信息

    怎么查询局域网内全部电脑IP和mac地址等信息_百度经验 https://jingyan.baidu.com/article/54b6b9c0348e432d583b47c1.html 枚举ping ...

  4. Java获取本机的IP与MAC地址

    有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...

  5. iOS开发——获取手机当前WiFi名和MAC地址

    获取手机WiFi信息. iOS9以前的方法,还是能用,警告就警告吧!iOS9以后使用的是苹果最新的API框架,NetworkExtension/NEHotspotHelper.h,这个框架,第一次开放 ...

  6. 获取客户机的ip和mac地址

    只获取clientIP package com.ppms.utils; import javax.servlet.http.HttpServletRequest; /** * Created by l ...

  7. C#获取路由器外网IP,MAC地址

    C#实现的获取路由器MAC地址,路由器外网地址.对于要获取路由器MAC地址,一定需要知道路由器web管理系统的用户名和密码.至于获取路由器的外网IP地址,可以不需要知道路由器web管理系统的用户名和密 ...

  8. 怎么查询局域网内全部电脑IP和mac地址等信息?

    在局域网内查询在线主机的IP一般比较简单,但局域网内全部电脑的IP怎么才能够查到呢?查询到IP后我还要知道对方的一些详细信息(如MAC地址.电脑名称等)该怎么查询呢??? 工具/原料 Windows ...

  9. C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)

    在开发过程中,经常需要获取电脑的一些属性,如获取硬盘ID/CPU序列号/MAC地址作为来加密字符串. 1.硬盘 在我查看网上一些文档时,发现很多人对硬盘序列号很模糊~ 什么叫硬盘序列号?指的是作为一个 ...

随机推荐

  1. js时间Date对象介绍及解决getTime转换为8点的问题

    前言 在做时间转换的时候,发现用“2016-04-12”转出来的时间戳是 2016-04-12 08:00的时间点,而不是0点. new Date('2016-04-12').getTime(); ) ...

  2. Flask安装过程中“配置虚拟环境”步骤报错,找不到activate.bat

    Run virtualenv venv --no-setuptools http://stackoverflow.com/questions/21826859/setting-up-a-virtual ...

  3. python raise a string exception is deprecated

    python不允许raise 一个内建的string 对象.所以就崩溃,可以先将其转换成其他string,比如赋值.

  4. 4541: [Hnoi2016]矿区

    学习了一下平面图剖分的姿势,orz cbh 每次只要随便选择一条边,然后不停尽量向左转就行 #include <bits/stdc++.h> #define N 1300000 #defi ...

  5. React state的使用

    相对于angular.js的双向数据绑定,React 可以使用State来实现. React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM). this ...

  6. markdownTest

    MARKDOWNTEST 11111111111111 有一种神奇的语言,它比html还简单,它巧妙地将内容与格式整合在一起--它就是Markdown 有一种神奇的语言,它比html还简单,它巧妙地将 ...

  7. 修改组策略,禁止用户修改IP

    运行中打开gepdit.msc,依次打开用户配置,管理模板,网络,网络连接:在右侧将“禁止访问LAN链接组建的属性”.“为管理员启用windows2000网络连接设置”设置为已启用即可令用户无法访问网 ...

  8. codeforces 484D Kindergarten (dp、贪心)

    题意:给n个数,分成若干个连续组,每组获益为max-min,输出最大获益. 参考:http://blog.csdn.net/keshuai19940722/article/details/408735 ...

  9. 关于C3翘边阴影的demo

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  10. url带#号,微信支付那些坑

    现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面. 在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是'U ...