如何获取当前设备的机型(更新到iPhoneX)?判断机型是否为iPhone X?
判断机型是否为iPhone X,首先想到的是判断当前设备的机型,另外也可以从他的固有尺寸去判断:
#define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
获取当前设备的机型:
// 设备型号的枚举值
typedef NS_ENUM(NSUInteger, DiviceType) {
iPhone_1G = 0,
iPhone_3G,
iPhone_3GS,
iPhone_4,
iPhone_4_Verizon,
iPhone_4S,
iPhone_5_GSM,
iPhone_5_CDMA,
iPhone_5C_GSM,
iPhone_5C_GSM_CDMA,
iPhone_5S_GSM,
iPhone_5S_GSM_CDMA,
iPhone_6,
iPhone_6_Plus,
iPhone_6S,
iPhone_6S_Plus,
iPhone_SE,
Chinese_iPhone_7,
Chinese_iPhone_7_Plus,
American_iPhone_7,
American_iPhone_7_Plus,
Chinese_iPhone_8,
Chinese_iPhone_8_Plus,
Chinese_iPhone_X,
Global_iPhone_8,
Global_iPhone_8_Plus,
Global_iPhone_X,
iPod_Touch_1G,
iPod_Touch_2G,
iPod_Touch_3G,
iPod_Touch_4G,
iPod_Touch_5Gen,
iPod_Touch_6G,
iPad_1,
iPad_3G,
iPad_2_WiFi,
iPad_2_GSM,
iPad_2_CDMA,
iPad_3_WiFi,
iPad_3_GSM,
iPad_3_CDMA,
iPad_3_GSM_CDMA,
iPad_4_WiFi,
iPad_4_GSM,
iPad_4_CDMA,
iPad_4_GSM_CDMA,
iPad_Air,
iPad_Air_Cellular,
iPad_Air_2_WiFi,
iPad_Air_2_Cellular,
iPad_Pro_97inch_WiFi,
iPad_Pro_97inch_Cellular,
iPad_Pro_129inch_WiFi,
iPad_Pro_129inch_Cellular,
iPad_Mini,
iPad_Mini_WiFi,
iPad_Mini_GSM,
iPad_Mini_CDMA,
iPad_Mini_GSM_CDMA,
iPad_Mini_2,
iPad_Mini_2_Cellular,
iPad_Mini_3_WiFi,
iPad_Mini_3_Cellular,
iPad_Mini_4_WiFi,
iPad_Mini_4_Cellular,
iPad_5_WiFi,
iPad_5_Cellular,
iPad_Pro_129inch_2nd_gen_WiFi,
iPad_Pro_129inch_2nd_gen_Cellular,
iPad_Pro_105inch_WiFi,
iPad_Pro_105inch_Cellular,
appleTV2,
appleTV3,
appleTV4,
i386Simulator,
x86_64Simulator,
iUnknown,
};
@interface DeviceInfoManager()
@property (nonatomic,assign) DiviceType iDevice;
@end
@implementation DeviceInfoManager
static DeviceInfoManager *_manager;
+ (instancetype)sharedManager
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_manager = [[DeviceInfoManageralloc] init];
_manager.iDevice = [selftransformMachineToIdevice];
});
return_manager;
}
- (const NSString *)getDeviceName
{
returniDeviceNameContainer[_manager.iDevice];
}
#pragma mark - Private Method
+ (DiviceType)transformMachineToIdevice{
// 需要#import "sys/utsname.h"
struct utsname systemInfo;
uname(&systemInfo);
NSString *machineString = [NSStringstringWithCString:systemInfo.machineencoding:NSUTF8StringEncoding];
if ([machineString isEqualToString:@"iPhone1,1"]) return iPhone_1G;
if ([machineString isEqualToString:@"iPhone1,2"]) return iPhone_3G;
if ([machineString isEqualToString:@"iPhone2,1"]) return iPhone_3GS;
if ([machineString isEqualToString:@"iPhone3,1"]) return iPhone_4;
if ([machineString isEqualToString:@"iPhone3,3"]) return iPhone_4_Verizon;
if ([machineString isEqualToString:@"iPhone4,1"]) return iPhone_4S;
if ([machineString isEqualToString:@"iPhone5,1"]) return iPhone_5_GSM;
if ([machineString isEqualToString:@"iPhone5,2"]) return iPhone_5_CDMA;
if ([machineString isEqualToString:@"iPhone5,3"]) return iPhone_5C_GSM;
if ([machineString isEqualToString:@"iPhone5,4"]) return iPhone_5C_GSM_CDMA;
if ([machineString isEqualToString:@"iPhone6,1"]) return iPhone_5S_GSM;
if ([machineString isEqualToString:@"iPhone6,2"]) return iPhone_5S_GSM_CDMA;
if ([machineString isEqualToString:@"iPhone7,2"]) return iPhone_6;
if ([machineString isEqualToString:@"iPhone7,1"]) return iPhone_6_Plus;
if ([machineString isEqualToString:@"iPhone8,1"]) return iPhone_6S;
if ([machineString isEqualToString:@"iPhone8,2"]) return iPhone_6S_Plus;
if ([machineString isEqualToString:@"iPhone8,4"]) return iPhone_SE;
// 日行两款手机型号均为日本独占,可能使用索尼FeliCa支付方案而不是苹果支付
if ([machineString isEqualToString:@"iPhone9,1"]) return Chinese_iPhone_7;
if ([machineString isEqualToString:@"iPhone9,2"]) return Chinese_iPhone_7_Plus;
if ([machineString isEqualToString:@"iPhone9,3"]) return American_iPhone_7;
if ([machineString isEqualToString:@"iPhone9,4"]) return American_iPhone_7_Plus;
if ([machineString isEqualToString:@"iPhone10,1"]) return Chinese_iPhone_8;
if ([machineString isEqualToString:@"iPhone10,4"]) return Global_iPhone_8;
if ([machineString isEqualToString:@"iPhone10,2"]) return Chinese_iPhone_8_Plus;
if ([machineString isEqualToString:@"iPhone10,5"]) return Global_iPhone_8_Plus;
if ([machineString isEqualToString:@"iPhone10,3"]) return Chinese_iPhone_X;
if ([machineString isEqualToString:@"iPhone10,6"]) return Global_iPhone_X;
if ([machineString isEqualToString:@"iPod1,1"]) return iPod_Touch_1G;
if ([machineString isEqualToString:@"iPod2,1"]) return iPod_Touch_2G;
if ([machineString isEqualToString:@"iPod3,1"]) return iPod_Touch_3G;
if ([machineString isEqualToString:@"iPod4,1"]) return iPod_Touch_4G;
if ([machineString isEqualToString:@"iPod5,1"]) return iPod_Touch_5Gen;
if ([machineString isEqualToString:@"iPod7,1"]) return iPod_Touch_6G;
if ([machineString isEqualToString:@"iPad1,1"]) return iPad_1;
if ([machineString isEqualToString:@"iPad1,2"]) return iPad_3G;
if ([machineString isEqualToString:@"iPad2,1"]) return iPad_2_WiFi;
if ([machineString isEqualToString:@"iPad2,2"]) return iPad_2_GSM;
if ([machineString isEqualToString:@"iPad2,3"]) return iPad_2_CDMA;
if ([machineString isEqualToString:@"iPad2,4"]) return iPad_2_CDMA;
if ([machineString isEqualToString:@"iPad2,5"]) return iPad_Mini_WiFi;
if ([machineString isEqualToString:@"iPad2,6"]) return iPad_Mini_GSM;
if ([machineString isEqualToString:@"iPad2,7"]) return iPad_Mini_CDMA;
if ([machineString isEqualToString:@"iPad3,1"]) return iPad_3_WiFi;
if ([machineString isEqualToString:@"iPad3,2"]) return iPad_3_GSM;
if ([machineString isEqualToString:@"iPad3,3"]) return iPad_3_CDMA;
if ([machineString isEqualToString:@"iPad3,4"]) return iPad_4_WiFi;
if ([machineString isEqualToString:@"iPad3,5"]) return iPad_4_GSM;
if ([machineString isEqualToString:@"iPad3,6"]) return iPad_4_CDMA;
if ([machineString isEqualToString:@"iPad4,1"]) return iPad_Air;
if ([machineString isEqualToString:@"iPad4,2"]) return iPad_Air_Cellular;
if ([machineString isEqualToString:@"iPad4,4"]) return iPad_Mini_2;
if ([machineString isEqualToString:@"iPad4,5"]) return iPad_Mini_2_Cellular;
if ([machineString isEqualToString:@"iPad4,7"]) return iPad_Mini_3_WiFi;
if ([machineString isEqualToString:@"iPad4,8"]) return iPad_Mini_3_Cellular;
if ([machineString isEqualToString:@"iPad4,9"]) return iPad_Mini_3_Cellular;
if ([machineString isEqualToString:@"iPad5,1"]) return iPad_Mini_4_WiFi;
if ([machineString isEqualToString:@"iPad5,2"]) return iPad_Mini_4_Cellular;
if ([machineString isEqualToString:@"iPad5,3"]) return iPad_Air_2_WiFi;
if ([machineString isEqualToString:@"iPad5,4"]) return iPad_Air_2_Cellular;
if ([machineString isEqualToString:@"iPad6,3"]) return iPad_Pro_97inch_WiFi;
if ([machineString isEqualToString:@"iPad6,4"]) return iPad_Pro_97inch_Cellular;
if ([machineString isEqualToString:@"iPad6,7"]) return iPad_Pro_129inch_WiFi;
if ([machineString isEqualToString:@"iPad6,8"]) return iPad_Pro_129inch_Cellular;
if ([machineString isEqualToString:@"iPad6,11"]) return iPad_5_WiFi;
if ([machineString isEqualToString:@"iPad6,12"]) return iPad_5_Cellular;
if ([machineString isEqualToString:@"iPad7,1"]) return iPad_Pro_129inch_2nd_gen_WiFi;
if ([machineStringisEqualToString:@"iPad7,2"]) return iPad_Pro_129inch_2nd_gen_Cellular;
if ([machineString isEqualToString:@"iPad7,3"]) return iPad_Pro_105inch_WiFi;
if ([machineString isEqualToString:@"iPad7,4"]) return iPad_Pro_105inch_Cellular;
if ([machineString isEqualToString:@"AppleTV2,1"]) return appleTV2;
if ([machineString isEqualToString:@"AppleTV3,1"]) return appleTV3;
if ([machineString isEqualToString:@"AppleTV3,2"]) return appleTV3;
if ([machineString isEqualToString:@"AppleTV5,3"]) return appleTV4;
if ([machineString isEqualToString:@"i386"]) return i386Simulator;
if ([machineString isEqualToString:@"x86_64"]) return x86_64Simulator;
returniUnknown;
}
#pragma Containers
static constNSString *iDeviceNameContainer[] = {
[iPhone_1G] = @"iPhone 1G",
[iPhone_3G] = @"iPhone 3G",
[iPhone_3GS] = @"iPhone 3GS",
[iPhone_4] = @"iPhone 4",
[iPhone_4_Verizon] =@"Verizon iPhone 4",
[iPhone_4S] = @"iPhone 4S",
[iPhone_5_GSM] = @"iPhone 5 (GSM)",
[iPhone_5_CDMA] = @"iPhone 5 (CDMA)",
[iPhone_5C_GSM] = @"iPhone 5C (GSM)",
[iPhone_5C_GSM_CDMA] =@"iPhone 5C (GSM+CDMA)",
[iPhone_5S_GSM] = @"iPhone 5S (GSM)",
[iPhone_5S_GSM_CDMA] =@"iPhone 5S (GSM+CDMA)",
[iPhone_6] = @"iPhone 6",
[iPhone_6_Plus] = @"iPhone 6 Plus",
[iPhone_6S] = @"iPhone 6S",
[iPhone_6S_Plus] = @"iPhone 6S Plus",
[iPhone_SE] = @"iPhone SE",
[Chinese_iPhone_7] =@"国行/日版/港行 iPhone 7",
[Chinese_iPhone_7_Plus] =@"港行/国行 iPhone 7 Plus",
[American_iPhone_7] = @"美版/台版 iPhone 7",
[American_iPhone_7_Plus] =@"美版/台版 iPhone 7 Plus",
[Chinese_iPhone_8] = @"国行/日版 iPhone 8",
[Chinese_iPhone_8_Plus] =@"国行/日版 iPhone 8 Plus",
[Chinese_iPhone_X] = @"国行/日版 iPhone X",
[Global_iPhone_8] =@"美版(Global) iPhone 8",
[Global_iPhone_8_Plus] =@"美版(Global) iPhone 8 Plus",
[Global_iPhone_X] =@"美版(Global) iPhone X",
[iPod_Touch_1G] = @"iPod Touch 1G",
[iPod_Touch_2G] = @"iPod Touch 2G",
[iPod_Touch_3G] = @"iPod Touch 3G",
[iPod_Touch_4G] = @"iPod Touch 4G",
[iPod_Touch_5Gen] =@"iPod Touch 5(Gen)",
[iPod_Touch_6G] = @"iPod Touch 6G",
[iPad_1] = @"iPad 1",
[iPad_3G] = @"iPad 3G",
[iPad_2_CDMA] = @"iPad 2 (GSM)",
[iPad_2_GSM] = @"iPad 2 (CDMA)",
[iPad_2_WiFi] = @"iPad 2 (WiFi)",
[iPad_3_WiFi] = @"iPad 3 (WiFi)",
[iPad_3_GSM] = @"iPad 3 (GSM)",
[iPad_3_CDMA] = @"iPad 3 (CDMA)",
[iPad_3_GSM_CDMA] =@"iPad 3 (GSM+CDMA)",
[iPad_4_WiFi] = @"iPad 4 (WiFi)",
[iPad_4_GSM] = @"iPad 4 (GSM)",
[iPad_4_CDMA] = @"iPad 4 (CDMA)",
[iPad_4_GSM_CDMA] =@"iPad 4 (GSM+CDMA)",
[iPad_Air] = @"iPad Air",
[iPad_Air_Cellular] =@"iPad Air (Cellular)",
[iPad_Air_2_WiFi] = @"iPad Air 2(WiFi)",
[iPad_Air_2_Cellular] =@"iPad Air 2 (Cellular)",
[iPad_Mini_WiFi] = @"iPad Mini (WiFi)",
[iPad_Mini_GSM] = @"iPad Mini (GSM)",
[iPad_Mini_CDMA] = @"iPad Mini (CDMA)",
[iPad_Mini_2] = @"iPad Mini 2",
[iPad_Mini_2_Cellular] =@"iPad Mini 2 (Cellular)",
[iPad_Mini_3_WiFi] =@"iPad Mini 3(WiFi)",
[iPad_Mini_3_Cellular] =@"iPad Mini 3 (Cellular)",
[iPad_Pro_97inch_WiFi] =@"iPad Pro 9.7 inch(WiFi)",
[iPad_Pro_97inch_Cellular] =@"iPad Pro 9.7 inch(Cellular)",
[iPad_Pro_129inch_WiFi] =@"iPad Pro 12.9 inch(WiFi)",
[iPad_Pro_129inch_Cellular] =@"iPad Pro 12.9 inch(Cellular)",
[iPad_5_WiFi] = @"iPad 5(WiFi)",
[iPad_5_Cellular] = @"iPad 5(Cellular)",
[iPad_Pro_129inch_2nd_gen_WiFi] =@"iPad Pro 12.9 inch(2nd generation)(WiFi)",
[iPad_Pro_129inch_2nd_gen_Cellular] =@"iPad Pro 12.9 inch(2nd generation)(Cellular)",
[iPad_Pro_105inch_WiFi] =@"iPad Pro 10.5 inch(WiFi)",
[iPad_Pro_105inch_Cellular] =@"iPad Pro 10.5 inch(Cellular)",
[appleTV2] = @"appleTV2",
[appleTV3] = @"appleTV3",
[appleTV4] = @"appleTV4",
[i386Simulator] = @"i386Simulator",
[x86_64Simulator] = @"x86_64Simulator",
[iUnknown] = @"Unknown"
};
如何获取当前设备的机型(更新到iPhoneX)?判断机型是否为iPhone X?相关推荐
- 获取安卓设备信息:机型、系统版本号、分辨率、运营商、联网方式、IMEI、MEID、MAC地址
获取Android 手机设备信息:操作系统版本号.手机分辨率.运营商.当前联网方式.IMEI.MEID.MAC地址 包括双卡机型上的两个IMEI信息 /*** Created by Pandaon 2 ...
- Unity 之 代码获取IOS设备型号 -- 做分辨率适配
Unity 之 代码获取IOS设备型号 一,通过机器型号校验 1.1 逻辑解释 1.2 实现代码 二,通过长宽比校验 一,通过机器型号校验 1.1 逻辑解释 在https://www.theiphon ...
- iOS学习——获取iOS设备的各种信息
不管是在Android开发还是iOS开发过程中,有时候我们需要经常根据设备的一些状态或信息进行不同的设置和性能配置,例如横竖屏切换时,电池电量低时,内存不够时,网络切换时等等,我们在这时候需要进行一些 ...
- 【转】FFmpeg获取DirectShow设备数据(摄像头,录屏)
这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1. 列设备 ffmpeg -list_devic ...
- FFmpeg获取DirectShow设备数据(摄像头,录屏)
这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1. 列设备 [plain] view plain ...
- 获取iOS设备唯一标识
在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理.我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊. 具体可以分为如下几种: 1.UUID 2.IDFA ...
- 【瑞芯微Rockchip Linux平台】SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息
[瑞芯微Rockchip Linux平台]SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息 1. 获取本机的蓝牙mac地址 __get_bt_mac_addr() ...
- 苹果屏蔽更新_屏蔽 iOS 系统更新的最新方法,支持所有 iPhone、iPad 设备
为了进行功能性更新.封堵已知漏洞,苹果经常会推送 iOS 系统更新,但不是所有人都乐意将设备升级最新版.可是 iOS 中并未提供禁止更新的设定,因此,用户必须用各种手段达到屏蔽更新的目的. 在 202 ...
- 获取Android设备的方向 ,使用加速度重力传感器
带有g-sensor的Android设备上可通过API获取到设备的运动加速度,应用程序通过一些假设和运算,可以从加速度计算出设备的方向 获取设备运动加速度的基本代码是: SensorManager s ...
最新文章
- Android组件框架:Android组件管理者ActivityManager
- 基于信封套打以及批量打印的实现过程
- 从自定义TagLayout看自定义布局的一般步骤[手动加精]
- vue-cli3 一直运行 /sockjs-node/info?t= 解决方案
- 数据结构源码笔记(C语言):置换-选择算法
- JVM性能调优监控工具总结
- CVPR 2020 论文大盘点-动作检测与动作分割篇
- 分享两条关于Eclipse Perl插件EPIC的tips吧~
- web打印控件|打印预览
- 使用phaserjs开发简单h5小游戏
- Axure RP9授权码(亲测有效)
- ideaIU-2020.3.2安装教程以及导入第一个spring boot项目运行和环境配置教程
- Sophix热修复的简单使用
- Mac 判断终端是否走了代理服务器的方法
- 算法导论第三章思考题
- unity 遮挡剔除的实现
- 有限域(Galois Field,GF,伽罗华域)的乘法原理
- sublime和vscode 格式化Json ——两步走
- Boll布林带突破策略
- “微风”吹拂,心旷神怡-微营销指导笔记1-前言
热门文章
- semaphore java_java Semaphore
- Kubernetes笔记(5) - Pod控制器
- 探索未来|一文看懂小米年度技术峰会 · 互联网技术专场
- js 给serialize对象添加元素
- 谷歌浏览器无法安装.crx后缀文件解决方法
- c#编程:事件delegate学习笔记-3
- 电商扣减库存_电商新零售库存分层模型介绍
- 隧道协议_CAPWAP
- html音乐代码大全,常用HTML代码速查表+梅竹背景音乐
- 【StackFlow】Uncaught TypeError: Cannot read property 'pageCount' of undefined