iOS判断iPhone型号
链接: http://stackoverflow.com/questions/11197509/ios-how-to-get-device-make-and-model
http://stackoverflow.com/questions/26028918/ios-how-to-determine-iphone-model-in-swift
这种是在较高层次获取设备类型,返回的是 iPhone , iPod , iPad 。适合要求不高的。
UIDevice.currentDevice().model
以下可以获取具体型号信息:
Swift Code:
//
// UIDeviceExtension.swift
// StopSmokingPrograms
//
// Created by Fran on 15/12/29.
// Copyright © 2015年 kimree. All rights reserved.
//
import Foundation
public enum DeviceModel : String {
case Simulator = "Simulator/Sandbox",
iPod1 = "iPod 1",
iPod2 = "iPod 2",
iPod3 = "iPod 3",
iPod4 = "iPod 4",
iPod5 = "iPod 5",
iPad2 = "iPad 2",
iPad3 = "iPad 3",
iPad4 = "iPad 4",
iPhone4 = "iPhone 4",
iPhone4S = "iPhone 4S",
iPhone5 = "iPhone 5",
iPhone5S = "iPhone 5S",
iPhone5C = "iPhone 5C",
iPadMini1 = "iPad Mini 1",
iPadMini2 = "iPad Mini 2",
iPadMini3 = "iPad Mini 3",
iPadAir1 = "iPad Air 1",
iPadAir2 = "iPad Air 2",
iPhone6 = "iPhone 6",
iPhone6plus = "iPhone 6 Plus",
iPhone6S = "iPhone 6S",
iPhone6Splus = "iPhone 6S Plus",
Unrecognized = "?unrecognized?"
}
extension UIDevice{
public var deviceModel: DeviceModel{
var systemInfo = utsname()
uname(&systemInfo)
let modelCode = withUnsafeMutablePointer(&systemInfo.machine) {
ptr in String.fromCString(UnsafePointer<CChar>(ptr))
}
var modelMap : [ String : DeviceModel ] = [
"i386" : .Simulator,
"x86_64" : .Simulator,
"iPod1,1" : .iPod1,
"iPod2,1" : .iPod2,
"iPod3,1" : .iPod3,
"iPod4,1" : .iPod4,
"iPod5,1" : .iPod5,
"iPad2,1" : .iPad2,
"iPad2,2" : .iPad2,
"iPad2,3" : .iPad2,
"iPad2,4" : .iPad2,
"iPad2,5" : .iPadMini1,
"iPad2,6" : .iPadMini1,
"iPad2,7" : .iPadMini1,
"iPhone3,1" : .iPhone4,
"iPhone3,2" : .iPhone4,
"iPhone3,3" : .iPhone4,
"iPhone4,1" : .iPhone4S,
"iPhone5,1" : .iPhone5,
"iPhone5,2" : .iPhone5,
"iPhone5,3" : .iPhone5C,
"iPhone5,4" : .iPhone5C,
"iPad3,1" : .iPad3,
"iPad3,2" : .iPad3,
"iPad3,3" : .iPad3,
"iPad3,4" : .iPad4,
"iPad3,5" : .iPad4,
"iPad3,6" : .iPad4,
"iPhone6,1" : .iPhone5S,
"iPhone6,2" : .iPhone5S,
"iPad4,1" : .iPadAir1,
"iPad4,2" : .iPadAir2,
"iPad4,4" : .iPadMini2,
"iPad4,5" : .iPadMini2,
"iPad4,6" : .iPadMini2,
"iPad4,7" : .iPadMini3,
"iPad4,8" : .iPadMini3,
"iPad4,9" : .iPadMini3,
"iPhone7,1" : .iPhone6plus,
"iPhone7,2" : .iPhone6,
"iPhone8,1" : .iPhone6S,
"iPhone8,2" : .iPhone6Splus
]
if let model = modelMap[String.fromCString(modelCode!)!] {
return model
}
return DeviceModel.Unrecognized
}
}
Objective-C Code:
UIDevice+DeviceModel.h
//
// UIDevice+DeviceModel.h
// TestDemo
//
// Created by Fran on 15/12/29.
// Copyright © 2015年 Fran. All rights reserved.
//
#import <UIKit/UIKit.h>
extern NSString *const Device_Simulator;
extern NSString *const Device_iPod1;
extern NSString *const Device_iPod2;
extern NSString *const Device_iPod3;
extern NSString *const Device_iPod4;
extern NSString *const Device_iPod5;
extern NSString *const Device_iPad2;
extern NSString *const Device_iPad3;
extern NSString *const Device_iPad4;
extern NSString *const Device_iPhone4;
extern NSString *const Device_iPhone4S;
extern NSString *const Device_iPhone5;
extern NSString *const Device_iPhone5S;
extern NSString *const Device_iPhone5C;
extern NSString *const Device_iPadMini1;
extern NSString *const Device_iPadMini2;
extern NSString *const Device_iPadMini3;
extern NSString *const Device_iPadAir1;
extern NSString *const Device_iPadAir2;
extern NSString *const Device_iPhone6;
extern NSString *const Device_iPhone6plus;
extern NSString *const Device_iPhone6S;
extern NSString *const Device_iPhone6Splus;
extern NSString *const Device_Unrecognized;
@interface UIDevice (DeviceModel)
-(NSString *) deviceModel;
@end
UIDevice+DeviceModel.m
//
// UIDevice+DeviceModel.m
// TestDemo
//
// Created by Fran on 15/12/29.
// Copyright © 2015年 Fran. All rights reserved.
//
#import "UIDevice+DeviceModel.h"
#import <sys/utsname.h>
NSString *const Device_Simulator = @"Simulator";
NSString *const Device_iPod1 = @"iPod1";
NSString *const Device_iPod2 = @"iPod2";
NSString *const Device_iPod3 = @"iPod3";
NSString *const Device_iPod4 = @"iPod4";
NSString *const Device_iPod5 = @"iPod5";
NSString *const Device_iPad2 = @"iPad2";
NSString *const Device_iPad3 = @"iPad3";
NSString *const Device_iPad4 = @"iPad4";
NSString *const Device_iPhone4 = @"iPhone 4";
NSString *const Device_iPhone4S = @"iPhone 4S";
NSString *const Device_iPhone5 = @"iPhone 5";
NSString *const Device_iPhone5S = @"iPhone 5S";
NSString *const Device_iPhone5C = @"iPhone 5C";
NSString *const Device_iPadMini1 = @"iPad Mini 1";
NSString *const Device_iPadMini2 = @"iPad Mini 2";
NSString *const Device_iPadMini3 = @"iPad Mini 3";
NSString *const Device_iPadAir1 = @"iPad Air 1";
NSString *const Device_iPadAir2 = @"iPad Mini 3";
NSString *const Device_iPhone6 = @"iPhone 6";
NSString *const Device_iPhone6plus = @"iPhone 6 Plus";
NSString *const Device_iPhone6S = @"iPhone 6S";
NSString *const Device_iPhone6Splus = @"iPhone 6S Plus";
NSString *const Device_Unrecognized = @"?unrecognized?";
@implementation UIDevice (DeviceModel)
- (NSString *)deviceModel{
struct utsname systemInfo;
uname(&systemInfo);
NSString* code = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
static NSDictionary* deviceNamesByCode = nil;
if (!deviceNamesByCode) {
deviceNamesByCode = @{
@"i386" : Device_Simulator,
@"x86_64" : Device_Simulator,
@"iPod1,1" : Device_iPod1,
@"iPod2,1" : Device_iPod2,
@"iPod3,1" : Device_iPod3,
@"iPod4,1" : Device_iPod4,
@"iPod5,1" : Device_iPod5,
@"iPad2,1" : Device_iPad2,
@"iPad2,2" : Device_iPad2,
@"iPad2,3" : Device_iPad2,
@"iPad2,4" : Device_iPad2,
@"iPad2,5" : Device_iPadMini1,
@"iPad2,6" : Device_iPadMini1,
@"iPad2,7" : Device_iPadMini1,
@"iPhone3,1" : Device_iPhone4,
@"iPhone3,2" : Device_iPhone4,
@"iPhone3,3" : Device_iPhone4,
@"iPhone4,1" : Device_iPhone4S,
@"iPhone5,1" : Device_iPhone5,
@"iPhone5,2" : Device_iPhone5,
@"iPhone5,3" : Device_iPhone5C,
@"iPhone5,4" : Device_iPhone5C,
@"iPad3,1" : Device_iPad3,
@"iPad3,2" : Device_iPad3,
@"iPad3,3" : Device_iPad3,
@"iPad3,4" : Device_iPad4,
@"iPad3,5" : Device_iPad4,
@"iPad3,6" : Device_iPad4,
@"iPhone6,1" : Device_iPhone5S,
@"iPhone6,2" : Device_iPhone5S,
@"iPad4,1" : Device_iPadAir1,
@"iPad4,2" : Device_iPadAir2,
@"iPad4,4" : Device_iPadMini2,
@"iPad4,5" : Device_iPadMini2,
@"iPad4,6" : Device_iPadMini2,
@"iPad4,7" : Device_iPadMini3,
@"iPad4,8" : Device_iPadMini3,
@"iPad4,9" : Device_iPadMini3,
@"iPhone7,1" : Device_iPhone6plus,
@"iPhone7,2" : Device_iPhone6,
@"iPhone8,1" : Device_iPhone6S,
@"iPhone8,2" : Device_iPhone6Splus
};
}
NSString* deviceName = [deviceNamesByCode objectForKey:code];
if(deviceName){
return deviceName;
}
return Device_Unrecognized;
}
@end
iOS判断iPhone型号的更多相关文章
- iOS 判断设备型号
+ (NSString*)deviceString { // 需要#import "sys/utsname.h" struct utsname systemInfo; uname( ...
- IOS判断手机型号
#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CG ...
- iOS获取设备型号、装置类型等信息
iOS获取设备型号.设备类型等信息 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然而他们都陆陆续续倒在了苹果的门下.苹果目前提供了2个方法供App获取设 ...
- iOS获取设备型号和App版本号等信息(OC+Swift)
iOS获取设备型号和App版本号等信息(OC+Swift) 字数1687 阅读382 评论3 喜欢10 好久没有写过博客了,因为中间工作比较忙,然后有些个人事情所以耽误了.但是之前写的博客还一直有人来 ...
- PHP判断iPhone、iPad、Android、PC设备的方法
因为工作需要我们需要知道是什么样了用户访问了我网站了,现在的移动设备种类多了,下面我们一起来看小编整理的一段php判断iPhone.iPad.Android.PC设备的例子. 注意:本代码的PC系统为 ...
- 获取iOS设备的型号
获取iOS设备的型号 需要#import "sys/utsname.h" structutsname systemInfo; uname(&systemIn ...
- iOS 判断数组是否为空
有人说可以用([array count]==0 )来判断是否为空,都是坑,如果array为空的话,执行count就会直接报错,程序崩溃退出. 正确判断NSArray是否为空的方法:用 (!array) ...
- iOS 判断相机权限是否被限制,判断相机是否可以使用
判断相机权限是否被限制 需要导入 AVFoundation 类 [objc] view plain copy #import <AVFoundation/AVFoundation.h> ...
- 判断iPhone和iPad 判断设备版本
//判断iPhone和iPad #define IS_IPHONE (!IS_IPAD) #define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInt ...
随机推荐
- The CircuitCalculator.com Blog a blog with live web calculators Home About Policies Contact PCB
PCB Trace Width Calculator 转载自:CircuitCalculator.com 关键词: PCB,Layout,电流,导线宽度. This Javascript web ca ...
- Windows XP系统安装SQL Server 2005(开发版)图解
转自Windows XP系统安装SQL Server 2005(开发版)图解 安装前提:由于有些从网上的下载的项目需要导入SQL Server 2005的数据文件,因此,今天便安装了这个数据库,我的系 ...
- spring初始化
* Created by litao on 15/12/29. */@Component("initTagDataProcessor")public class InitTagDa ...
- C++内存管理(超长,例子很详细,排版很好)
[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...
- python统计英文首字母出现的次数
使用python解析有道词典导出的xml格式单词,统计各个首字母出现的次数,并按次数由多到少进行排序 相关实现 导出的xml格式如下 <wordbook> <item> < ...
- bzoj1263
观察可得,最大的拆分方法是尽量拆成3,特殊的,如果最后剩下了1,那么就把3+1变成2+2 然后高精度计算即可 var s2,s3,i,n,l:longint; a:..] of longint ...
- 在eclipse中使用jetty插件替代m2e开发调试maven web项目
第一步在相应的web项目上配置jetty插件,配置如下: <plugin> <groupId>org.mortbay.jetty</groupId> <art ...
- C#的装箱和拆箱
1:装箱 其实就是将一个值类型的转换成一个引用类型,或者把值类型转换成一个被该值类型那个应用的接口类型,这个过程会使用堆栈.被装箱的值是作为一个复制赋给对象的. int intValue = 100 ...
- 字符串(AC自动机):HDU 5129 Yong Zheng's Death
Yong Zheng's Death Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/O ...
- android报错——The import android.util cannot be resolved
Eclipse导入外部Android工程时,总会遇到The import android.util cannot be resolved 错误,解决方法如下: 首先检查project.properti ...