当前位置: 首页 > news >正文

iOS如何获取设备型号的最新方法总结

每一种 iOS 设备型号都有对应的一个或多个硬件编码/标识符,称为 device model 或者叫 machine name

通常的做法是,先获取设备的 device model 值,再手动映射为具体的设备型号(或者直接把 device model 值传给后端,让后端去做映射,这样的好处是可以随时兼容新设备)。

完整的 device mode 数据参考 Wiki:https://www.theiphonewiki.com/wiki/Models

我们可以先获取 device model 值,记为 internalName ,然后进行对比判断,转换成具体的设备型号。实现代码如下图所示:

+ (NSString *)deviceName {struct utsname systemInfo;uname(&systemInfo);NSString *internalName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];NSDictionary *dict = @{// iPhone@"iPhone1,1" : @"iPhone",@"iPhone1,2" : @"iPhone 3G",@"iPhone2,1" : @"iPhone 3GS",@"iPhone3,1" : @"iPhone 4",@"iPhone3,2" : @"iPhone 4",@"iPhone3,3" : @"iPhone 4",@"iPhone4,1" : @"iPhone 4S",@"iPhone5,1" : @"iPhone 5",@"iPhone5,2" : @"iPhone 5",@"iPhone5,3" : @"iPhone 5c",@"iPhone5,4" : @"iPhone 5c",@"iPhone6,1" : @"iPhone 5s",@"iPhone6,2" : @"iPhone 5s",@"iPhone7,2" : @"iPhone 6",@"iPhone7,1" : @"iPhone 6 Plus",@"iPhone8,1" : @"iPhone 6s",@"iPhone8,2" : @"iPhone 6s Plus",@"iPhone8,4" : @"iPhone SE (1st generation)",@"iPhone9,1" : @"iPhone 7",@"iPhone9,3" : @"iPhone 7",@"iPhone9,2" : @"iPhone 7 Plus",@"iPhone9,4" : @"iPhone 7 Plus",@"iPhone10,1" : @"iPhone 8",@"iPhone10,4" : @"iPhone 8",@"iPhone10,2" : @"iPhone 8 Plus",@"iPhone10,5" : @"iPhone 8 Plus",@"iPhone10,3" : @"iPhone X",@"iPhone10,6" : @"iPhone X",@"iPhone11,8" : @"iPhone XR",@"iPhone11,2" : @"iPhone XS",@"iPhone11,6" : @"iPhone XS Max",@"iPhone11,4" : @"iPhone XS Max",@"iPhone12,1" : @"iPhone 11",@"iPhone12,3" : @"iPhone 11 Pro",@"iPhone12,5" : @"iPhone 11 Pro Max",@"iPhone12,8" : @"iPhone SE (2nd generation)",@"iPhone13,1" : @"iPhone 12 mini",@"iPhone13,2" : @"iPhone 12",@"iPhone13,3" : @"iPhone 12 Pro",@"iPhone13,4" : @"iPhone 12 Pro Max",@"iPhone14,4" : @"iPhone 13 mini",@"iPhone14,5" : @"iPhone 13",@"iPhone14,2" : @"iPhone 13 Pro",@"iPhone14,3" : @"iPhone 13 Pro Max",@"iPhone14,6" : @"iPhone SE (3rd generation)",@"iPhone14,7" : @"iPhone 14",@"iPhone14,8" : @"iPhone 14 Plus",@"iPhone15,2" : @"iPhone 14 Pro",@"iPhone15,3" : @"iPhone 14 Pro Max",// iPad@"iPad1,1" : @"iPad",@"iPad2,1" : @"iPad 2",@"iPad2,2" : @"iPad 2",@"iPad2,3" : @"iPad 2",@"iPad2,4" : @"iPad 2",@"iPad3,1" : @"iPad (3rd generation)",@"iPad3,2" : @"iPad (3rd generation)",@"iPad3,3" : @"iPad (3rd generation)",@"iPad3,4" : @"iPad (4th generation)",@"iPad3,5" : @"iPad (4th generation)",@"iPad3,6" : @"iPad (4th generation)",@"iPad6,11" : @"iPad (5th generation)",@"iPad6,12" : @"iPad (5th generation)",@"iPad7,5" : @"iPad (6th generation)",@"iPad7,6" : @"iPad (6th generation)",@"iPad7,11" : @"iPad (7th generation)",@"iPad7,12" : @"iPad (7th generation)",// iPad Air@"iPad4,1" : @"iPad Air",@"iPad4,2" : @"iPad Air",@"iPad4,3" : @"iPad Air",@"iPad5,3" : @"iPad Air 2",@"iPad5,4" : @"iPad Air 2",@"iPad11,3" : @"iPad Air (3rd generation)",@"iPad11,4" : @"iPad Air (3rd generation)",// iPad Pro@"iPad6,7" : @"iPad Pro (12.9-inch)",@"iPad6,8" : @"iPad Pro (12.9-inch)",@"iPad6,3" : @"iPad Pro (9.7-inch)",@"iPad6,4" : @"iPad Pro (9.7-inch)",@"iPad7,1" : @"iPad Pro (12.9-inch) (2nd generation)",@"iPad7,2" : @"iPad Pro (12.9-inch) (2nd generation)",@"iPad7,3" : @"iPad Pro (10.5-inch)",@"iPad7,4" : @"iPad Pro (10.5-inch)",@"iPad8,1" : @"iPad Pro (11-inch)",@"iPad8,2" : @"iPad Pro (11-inch)",@"iPad8,3" : @"iPad Pro (11-inch)",@"iPad8,4" : @"iPad Pro (11-inch)",@"iPad8,5" : @"iPad Pro (12.9-inch) (3rd generation)",@"iPad8,6" : @"iPad Pro (12.9-inch) (3rd generation)",@"iPad8,7" : @"iPad Pro (12.9-inch) (3rd generation)",@"iPad8,8" : @"iPad Pro (12.9-inch) (3rd generation)",@"iPad8,9" : @"iPad Pro (11-inch) (2nd generation)",@"iPad8,10" : @"iPad Pro (11-inch) (2nd generation)",@"iPad8,11" : @"iPad Pro (12.9-inch) (4th generation)",@"iPad8,12" : @"iPad Pro (12.9-inch) (4th generation)",// iPad mini@"iPad2,5" : @"iPad mini",@"iPad2,6" : @"iPad mini",@"iPad2,7" : @"iPad mini",@"iPad4,4" : @"iPad mini 2",@"iPad4,5" : @"iPad mini 2",@"iPad4,6" : @"iPad mini 2",@"iPad4,7" : @"iPad mini 3",@"iPad4,8" : @"iPad mini 3",@"iPad4,9" : @"iPad mini 3",@"iPad5,1" : @"iPad mini 4",@"iPad5,2" : @"iPad mini 4",@"iPad11,1" : @"iPad mini (5th generation)",@"iPad11,2" : @"iPad mini (5th generation)",//other@"i386":@"iPhone Simulator",@"x86_64":@"iPhone Simulator",};NSString *model = [dict objectForKey:internalName];if (model.length == 0) {model = internalName;}return model;
}

相关文章:

iOS如何获取设备型号的最新方法总结

每一种 iOS 设备型号都有对应的一个或多个硬件编码/标识符,称为 device model 或者叫 machine name 通常的做法是,先获取设备的 device model 值,再手动映射为具体的设备型号(或者直接把 device model 值传给后端,让后…...

SpringBoot之RestTemplate使用Apache的HttpClient连接池

SpringBoot自带的RestTemplate是没有使用连接池的,只是SimpleClientHttpRequestFactory实现了ClientHttpRequestFactory、AsyncClientHttpRequestFactory 2个工厂接口,因此每次调用接口都会创建连接和销毁连接,如果是高并发场景下会大大降低性…...

第49节:cesium 倾斜模型osgb转3dtiles,并加载(含源码+视频)

结果示例: 完整步骤: 1、启动并登陆cesiumlab 2、准备OSGB模型数据(含下载地址) 链接:https://pan.quark.cn/s/46ac7b0b2bed 提取码:TvWL3、倾斜模型切片 选择倾斜模型data文件夹 空间参考、零点坐标 默认 强制双面关闭、无光照 打开...

零信任安全模型详解:探讨零信任安全策略的原理、实施方法和最佳实践,确保在网络中实现最小特权原则

在当今日益复杂和危险的网络环境中,传统的网络安全模型已经不再能够满足对抗不断进化的威胁。零信任安全模型应运而生,以其强调“不信任,始终验证”的理念,成为了当今信息技术领域中的热门话题。本文将深入探讨零信任安全模型&…...

01_nodejs简介

01 【nodejs简介】 1.前言 Node 的重要性已经不言而喻,很多互联网公司都已经有大量的高性能系统运行在 Node 之上。Node 凭借其单线程、异步等举措实现了极高的性能基准。此外,目前最为流行的 Web 开发模式是前后端分离的形式,即前端开发者…...

企业架构LNMP学习笔记4

企业服务器LNMP环境搭建: 常见的软件架构: 1)C/S: client/server 2)B/S: browser/server 不管是C还是B,都是属于客户端属于前端。那么运维人员主要是负责和管理的Server端,也统称为服务器端。为了快速的…...

探索UniApp分包

目录 什么是UniApp分包? UniApp分包的原理 优势 如何使用UniApp分包 1.manifest.json文件配置 2.静态图片资源分包注意事项 3.pages.json配置 结论 探索UniApp分包:优化移动应用性能与用户体验 在移动应用开发领域,性能和用户体验是至…...

uniapp 支持图片放大

<view class"list" v-for"(item, index) in urls" :key"index"><image :src"item" click"viewImg(item, index)" disabled></image></view> js // 预览大图 viewImg(data, index) {uni.previewImag…...

Oracle数据泵备份恢复(导出导入)详细语句

数据泵备份 查询已存在备份目录 select * from dba_directories;新建备份目录 create directory dbbak as /u01/dbbak;注意&#xff1a;在本地新建对应的物理目录 给指定用户赋权 grant read, write on directory dbbak to testuser; 或者直接把目录的权限设置为公开 g…...

【JS案例】JS实现积分抽奖(内附源码)

JS案例实现积分抽奖 &#x1f31f;效果展示 &#x1f31f;HTML结构 &#x1f31f;CSS样式 &#x1f31f;实现思路 &#x1f31f;具体实现 1.定义抽奖次数渲染 2.点击抽奖按钮,实现滚动抽奖效果 3.弹窗处理 &#x1f31f;完整代码 &#x1f31f;写在最后 &#x1f3…...

angular抛出 ExpressionChangedAfterItHasBeenCheckedError错误分析

当变更检测完成后又更改了表达式值时&#xff0c;Angular 就会抛出 ExpressionChangedAfterItHasBeenCheckedError 错误。Angular 只会在开发模式下抛出此错误。 在开发模式下&#xff0c;Angular 在每次变更检测运行后都会执行一次附加检查&#xff0c;以确保绑定没有更改。这…...

动态链接库的__declspec(dllexport)关键字的概念

在 Windows 操作系统下&#xff0c;创建一个动态链接库&#xff08;DLL&#xff09;项目时&#xff0c;您需要通过 __declspec(dllexport) 关键字来显式地标记希望在 DLL 中 公开 的函数、类、变量等符号。这是因为在默认情况下&#xff0c;编译器会将函数和符号视为 私有&…...

群晖NAS:DS Video、Jellyfin等视频电影电视剧海报、背景墙搜刮器

群晖NAS&#xff1a;DS Video、Jellyfin等视频电影电视剧海报、背景墙搜刮器 本文只使用豆瓣插件方式&#xff0c;系统默认的 The Movie Database 好注册&#xff0c;但是授权码输入后域名不通过&#xff0c;很麻烦。 1、插件地址&#xff1a; https://www.aliyundrive.com/s…...

WEBGL(3):鼠标动态绘制点

1 实现思路 绘制单个点鼠标事件监听点击事件将点推送到数组中绘制数组中所有点 2 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge&…...

Sass基础

Sass基础 简介 Sass是一种stylesheet语言&#xff0c;可以被编译成CSS。Sass允许你使用诸如variabels&#xff0c;nested rules&#xff0c;mixins&#xff0c;functions等等语法&#xff0c;这些都将在本篇的接下来进行讲解。 因为之前一直学的后端&#xff0c;前端只是因为…...

Java中的消息队列有哪些?

在Java中&#xff0c;有几种常见的消息队列实现&#xff0c;包括&#xff1a; Apache Kafka&#xff1a;一个分布式流处理平台&#xff0c;具有高吞吐量、可持久化、可扩展等特点。 RabbitMQ&#xff1a;一个开源的消息代理&#xff0c;实现了AMQP&#xff08;高级消息队列协议…...

多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比

多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比 目录 多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比 模型描述 M…...

测试用例编写规范参考

章节目录&#xff1a; 一、规范目的二、模块划分三、颗粒度规范四、编写规范五、具体分项5.1 用例标题5.2 前置条件5.3 操作步骤5.4 预期结果 六、用例维护七、结束语 一、规范目的 规范合理&#xff0c;可执行性。一定要保证高可读性。 二、模块划分 同级别、同等级功能点。…...

unity3d:功能验证,收集开源项目的工程合集

unity3d功能验证&#xff0c;和收集开源项目的工程合集 目录持续更新地址 【腾讯文档】UnityForTest目录 https://docs.qq.com/doc/DWm9HSkVhTGdyUUVo 源码 https://github.com/luoyikun/UnityForTest 动画 创建骨骼动画 BoneAnimation场景 代码创建Mesh&#xff0c;骨骼…...

plotly_beforehover 用法:

在Plotly.js中&#xff0c;plotly_beforehover是在鼠标悬停在数据点上之前触发的回调事件。它的主要作用是在鼠标悬停事件发生前做一些准备工作。 plotly_beforehover事件是与图表对象绑定的&#xff0c;可以通过调用on方法来绑定事件处理程序。下面是一个示例代码&#xff1a…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...