链接: 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