iOS 获取硬件信息
iOS 系统总以保护用户隐私标榜,从禁止获取 Mac 地址,禁止获取 UDID,禁止获取手机号码,禁止获取IMEI等等。。。,iOS 开发人员总是在苹果限制的道路上斗智斗勇!
下表中不包括用私有API获取硬件信息,因为使用私有API会被禁止上架。
信息类型 | 类型说明 | 能否获取 | 示例 | 备注 |
---|---|---|---|---|
设备型号 | 具体那一款手机 | 支持 | iPhone,iPad,iPod | 通过 systemInfo.machine 获取 |
系统版本 | 设备系统的版本 | 支持 | iPhone9,1,iPhone9,2 | 通过 systemInfo.machine 获取 |
屏幕分辨率 | 手机屏幕分辨率 | 支持 | 568×320,667×375 | 包括物理分辨率和逻辑分辨率 |
IMEI | 手机设备唯一标识 | 493002407599521 | iOS 5 之后被禁止获取 | |
IMSI | sim 卡用户身份识别码 | 460030912121001 | 只能获取部分代号 | |
sim 卡序列号 | sim 卡的唯一标识 | 手机卡背面 4 行共 20 个数字 | 无法获取 | |
手机号码 | 一般为11位数字 | 18888888888 | iOS 5 之后被禁止获取,获取值都为 nil | |
运营商信息 | 提供网络服务的供应商 | 支持 | 中国移动,中国联通,中国电信 | 有多种方法获取 |
设备内存 | 手机内存 RAM | 支持 | 2000.0MB | 可通过系统 API 获取 |
App 占用内存 | App 占用的内存 RAM | 支持 | 43.5MB | 可通过系统 API 获取 |
磁盘总空间 | 设备存储的总大小 | 支持 | 16384.0MB | 可通过系统 API 获取 |
磁盘空闲空间 | 设备存储未使用空间大小 | 支持 | 2200.0MB | 可通过系统 API 获取 |
磁盘已使用空间 | 设备存储未使用空间大小 | 支持 | 2200.0MB | 可通过系统 API 获取 |
CPU 型号 | CPU 类型 | 支持 | CPU_TYPE_X86_64 | CPU 类型 |
CPU 个数 | CPU 是几核的 | 支持 | 4,核心数为 4 | CPU 核心数 |
手机主板型号 | 手机主板硬件的编号 | 无法获取 | 无法获取 | |
是否破解 | 手机是否越狱 | 不准确 | 通过判断是否存在某些文件 | 新越狱工具可能检测不到 |
mac 地址 | 网卡的物理地址 | 02:00:00:00:00:00 | iOS 7 之后被禁止获取 | |
当前网络环境 | 当前手机使用 WiFi/4G | 支持 | 2G/3G/4G/WIFI | 系统方法获取或读取状态栏获取 |
局域网 IP | 手机连入网络的局域网地址 | 不准确 | 192.168.1.3 | 使用 VPN 等复杂网络可能会不准确 |
IP | 手机连入网络的地址 | 111.200.9.21 | 不支持本地获取,可通过后台返回 | |
GPS | 卫星定位 | 不准确 | 获取经纬度反地理编码 | 地下室等 GPS 信号弱有较大误差 |
设备序列号 | 设备唯一标识 | 不准确 | iOS 的 UUID | 删除重装会变,重置位置和隐私会变 |
APP 更新时间 | 软件更新时间或首次安装时间 | 支持 | 2019-06-01 12:32:38 | 可读取info.plist创建时间 |
检测代理 | 设备使用代理 IP | 支持 | YES/NO | 可准确检测设备是否设置了代理 |
电池电量 | 当前设备电池电量百分比 | 支持 | 0.53 表示剩余电量 53% | 取值范围 0 至 1.0,-1.0 表示无法识别电池 |
部分详细说明
- 手机型号:通过 systemInfo.machine 获取判断是哪种设备。
- 系统版本:通过 systemInfo.machine 获取设备型号后判断,例如 iPhone9,1 对应 iPhone7,iPhone9,2 对应 iPhone7 Plus。
- 屏幕分辨率:包括物理分辨率和逻辑分辨率,物理分辨率=逻辑分辨率×屏幕缩放比(就是的 1x,2x,3x),1x 设备现在基本绝迹,2x 对应 4 寸和 4.7 屏幕,3x 对应 Plus 设备的 5.5 寸屏幕。
- IMEI:IMEI(International Mobile Equipment Identity) 是国际移动设备身份码的缩写,国际移动装备辨识码,是由 15 位数字组成的”电子串号”,它与每台移动电话机一一对应,而且该码是全世界唯一的。电话拨号键盘输入
*#06#
即可显示。 - IMSI:sim 卡中用户身份识别码,储存在 sim 卡中。iOS 设备现在只能通过 CTTelephonyNetworkInfo 获取部分信息,如中国 MCC 代号460,MNC 中国移动为 00,02,07,IMSI 是由信息拼接而成,具体拼接方法 Google。
- sim卡序列号:sim 卡的唯一标识,就是 sim 卡背面的四行数字,共 20 个数字。
- 运营商信息:有多种方法获取,通过CTTelephonyNetworkInfo框架获取,或者通过遍历状态栏StatusBar图标文字获取;其中如果未安装sim卡时,国行iPhone通过CTTelephonyNetworkInfo获取为默认值中国移动。
- 运行内存:手机运行程序时的内存RAM(不是存储空间),可通过手机型号反推,通过API获取的不准确。
- CPU 型号:能够获取 CPU 类型(例如 32 位 CPU 和 64 位CPU)和核心数(双核单核)。
- mac 地址:iOS 7 之后被禁止获取,所有手机获取到的都是 02:00:00:00:00:00。
- APP 安装时间及更新时间:可用沙盒文件(例如 info.plist)创建时间来计算实际安装时间,也就是更新时间。至于 App 首次安装时间,可在沙盒存储一个时间标记,有值读取即可,无值时存入本次的安装时间。