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

IOS Devices Version

游戏项目中有一个专门用于收集IOS崩溃的接口和查询页,运营/测试的同事有时候会通过查询页大概看一下每日崩溃的情况,经常会问iPhone6,1是什么,iPhone7,1又是什么设备?

 

我从网上仔细搜索了一下,目前最全的是来自维基百科的:List of iOS devices

其中Hardware strings这一栏目前是最全的,iPhone后面第一位数字表示的是第几代iPhone,比如上面的7,表示第7代iphone,也就是iphone6。下面来列一下iphone设备列表

 

Apple iPhoneHardware identifier
iPhone(Original/1st Gen/EDGE)iPhone1,1
iPhone 3GiPhone1,2
iPhone 3GSiPhone2,1
iPhone 3G(China/No Wi-Fi)iPhone1,2
iPhone 3GS(China/No Wi-Fi)iPhone2,1
iPhone 4(GSM)iPhone3,1
iPhone 4 (CDMA/Verizon/Sprint)iPhone3,3
iPhone 4SiPhone4,1
iPhone 5 (GSM/LTE 4, 17/North America)iPhone5,1
iPhone 5 (CDMA/LTE, Sprint/Verizon/KDDI)iPhone5,2
iPhone 5 (GSM/LTE 1, 3, 5/International)iPhone5,1
iPhone 5 (CDMA China/UIM/WAPI)iPhone5,2
iPhone 5 (GSM/LTE/AWS/North America)iPhone5,1
iPhone 5c (GSM/North America/A1532)iPhone5,3
iPhone 5c (CDMA/Verizon/A1532)iPhone5,3
iPhone 5c (UK/Europe/Middle East/A1507)iPhone5,4
iPhone 5c (China Mobile/A1516)iPhone5,4
iPhone 5c (China Unicom/A1526)iPhone5,4
iPhone 5s (CDMA/Verizon/A1533)iPhone6,1
iPhone 5s (CDMA/China Telecom/A1533)iPhone6,1
iPhone 5s (China Mobile/A1518)iPhone6,2
iPhone 6 (GSM/North America/A1549)iPhone7,2
iPhone 6 (CDMA/Verizon/A1549)iPhone7,2
iPhone 6 (China Mobile/A1589)iPhone7,2
iPhone 6 Plus (China Mobile/A1593)iPhone7,1

表格数据来源:http://www.everymac.com/systems/apple/iphone/index-iphone-specs.html

 

每一代Phone,都有很多不同的版本,比如韩版、欧版、港版的区分,iPad更有3G/WiFi的区分,所以上述方法只能判断出当前设备大概是什么型号,不是很精准,针对某些设置上才出现的bug,可能需要更深入的一些细分了。不过,通常来看,设备型号 + IOS系统版本,基本上就很容易复现问题了,越狱对bug的影响越来越小。

 

今年,Apple Watch又发布了,所以又加了俩:Watch1,1、Watch1,2(鉴于watch的屏幕、性能限制,暂时没什么游戏能上的去,可以忽略),除此之外,还有Apple TV,貌似在国内还没啥市场也可以暂时忽略。上面列表也只是列出了iPhone、iPad,其它的还有iPod touch,有兴趣可以参考这里:

http://theiphonewiki.com/wiki/Models

 

这里提供一份示例代码:

- (NSString *)platformString
{
    NSString *platform = [self platform];

    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"])    return @"Verizon iPhone 4";
    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5 (GSM)";
    if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5c (GSM)";
    if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5c (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5s (GSM)";
    if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5s (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
    if ([platform isEqualToString:@"iPhone7,2"])    return @"iPhone 6";
    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
    if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";
    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
    if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini (GSM)";
    if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
    if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 (GSM)";
    if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
    if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4 (GSM)";
    if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";
    if ([platform isEqualToString:@"iPad4,2"])      return @"iPad Air (Cellular)";
    if ([platform isEqualToString:@"iPad4,4"])      return @"iPad mini 2G (WiFi)";
    if ([platform isEqualToString:@"iPad4,5"])      return @"iPad mini 2G (Cellular)";
    if ([platform isEqualToString:@"i386"])         return @"Simulator";
    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";

    return platform;
}

更多参考:

[1]How to check iOS version?

[2]Determine device (iPhone, iPod Touch) with iPhone SDK

[3]The iPhone wiki Models

相关文章:

  • C#文件操作大全
  • SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)...
  • Arguments的使用
  • Web服务器磁盘满故障深入解析
  • 在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)
  • ActionScript3游戏中的图像编程(连载十七)
  • Telnet Windows Server时,提示NTLM authenticatio错误解决方法
  • 深入分析关于DHCP SNOOPING的设置
  • 关于 ACCESS 中插入操作的相关内容
  • 深挖BAT内部级别和薪资待遇,你敢看?(转)
  • 学习 WCF (4)--学会使用配置文件
  • 《3D Math Primer for Graphics and Game Development》读书笔记2
  • LAMP之php 与 mysql 配置(三)
  • 走进wordpress 详细说说template-loader.php
  • ubuntu的备份和还原
  • 【翻译】babel对TC39装饰器草案的实现
  • 2019.2.20 c++ 知识梳理
  • Akka系列(七):Actor持久化之Akka persistence
  • css选择器
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Js基础知识(一) - 变量
  • Laravel 菜鸟晋级之路
  • laravel5.5 视图共享数据
  • NSTimer学习笔记
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python socket服务器端、客户端传送信息
  • Python 反序列化安全问题(二)
  • Vue2 SSR 的优化之旅
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 树莓派 - 使用须知
  • 微服务核心架构梳理
  • 正则与JS中的正则
  • const的用法,特别是用在函数前面与后面的区别
  • 阿里云ACE认证学习知识点梳理
  • 如何用纯 CSS 创作一个货车 loader
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (第一天)包装对象、作用域、创建对象
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (五)MySQL的备份及恢复
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • **PHP分步表单提交思路(分页表单提交)
  • ..回顾17,展望18
  • ./configure,make,make install的作用
  • .chm格式文件如何阅读
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)