Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Identify new iPhone model on xcode (5, 5c, 5s) [duplicate]

I'm writing an app that has different functionality depending on the model of iPhone. Is there a way to distinguish between iPhone 5, and 5c 5s? I can not do a check on the display because it is identical. Thanks in advance.

like image 832
user2698702 Avatar asked Oct 25 '13 07:10

user2698702


People also ask

How do I identify iPhone model?

Look on your deviceThe model number is on the upper side—the side with the display. On iPhone models that support eSIM only, you can find the model number in Settings > General > About.

How do you tell what iPhone I have without turning it on?

Luckily, there is a way to find out which iPhone you have without turning it on or unlocking it by checking the Model number printed on it. The Model number starts with the letter A, as discussed in the previous chapter. First, examine your iPhone's back cover.


2 Answers

Objective-C & SWIFT

This is working on all version like iOS 6, iOS 7 and iOS 8 etc...

And updated for iPhone 6 & iPhone 6 Plus

 -(void)viewDidLoad {      [super viewDidLoad];     // Do any additional setup after loading the view from its nib.        size_t size;     sysctlbyname("hw.machine", NULL, &size, NULL, 0);     char *machine = malloc(size);     sysctlbyname("hw.machine", machine, &size, NULL, 0);     NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];     NSLog(@"iPhone Device%@",[self platformType:platform]);          free(machine); }   - (NSString *) platformType:(NSString *)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,2"])    return @"iPhone 6";     if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";     if ([platform isEqualToString:@"iPhone8,1"])    return @"iPhone 6s";     if ([platform isEqualToString:@"iPhone8,2"])    return @"iPhone 6s Plus";     if ([platform isEqualToString:@"iPhone8,4"])    return @"iPhone SE";     if ([platform isEqualToString:@"iPhone9,1"])    return @"iPhone 7";     if ([platform isEqualToString:@"iPhone9,2"])    return @"iPhone 7 Plus";     if ([platform isEqualToString:@"iPhone9,3"])    return @"iPhone 7";     if ([platform isEqualToString:@"iPhone9,4"])    return @"iPhone 7 Plus";     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,3"])      return @"iPad Air";     if ([platform isEqualToString:@"iPad4,4"])      return @"iPad Mini 2G (WiFi)";     if ([platform isEqualToString:@"iPad4,5"])      return @"iPad Mini 2G (Cellular)";     if ([platform isEqualToString:@"iPad4,6"])      return @"iPad Mini 2G";     if ([platform isEqualToString:@"iPad4,7"])      return @"iPad Mini 3 (WiFi)";     if ([platform isEqualToString:@"iPad4,8"])      return @"iPad Mini 3 (Cellular)";     if ([platform isEqualToString:@"iPad4,9"])      return @"iPad Mini 3 (China)";     if ([platform isEqualToString:@"iPad5,3"])      return @"iPad Air 2 (WiFi)";     if ([platform isEqualToString:@"iPad5,4"])      return @"iPad Air 2 (Cellular)";     if ([platform isEqualToString:@"AppleTV2,1"])   return @"Apple TV 2G";     if ([platform isEqualToString:@"AppleTV3,1"])   return @"Apple TV 3";     if ([platform isEqualToString:@"AppleTV3,2"])   return @"Apple TV 3 (2013)";     if ([platform isEqualToString:@"i386"])         return @"Simulator";     if ([platform isEqualToString:@"x86_64"])       return @"Simulator";     return platform; } 

this code is also AppStore safe.

SWIFT 3.2

    override func viewDidLoad() {     super.viewDidLoad()      var sysInfo = utsname()     uname(&sysInfo)     let machine = Mirror(reflecting: sysInfo.machine)     let identifier = machine.children.reduce("") { identifier, element in         guard let value = element.value as? Int8, value != 0 else { return identifier }         return identifier + String(UnicodeScalar(UInt8(value)))     }          NSLog("Device Type ----> %@", self.platformType(platform: identifier as NSString));          print(self.platformType(platform: identifier as NSString)) }      func platformType(platform : NSString) -> NSString{     if platform.isEqual(to: "iPhone1,1")  {         return "iPhone 1G"     }     else if platform.isEqual(to: "iPhone1,2"){         return "iPhone 3G"     }     else if platform.isEqual(to: "iPhone2,1"){         return "iPhone 3GS"     }     else if platform.isEqual(to: "iPhone3,1"){         return "iPhone 4"     }     else if platform.isEqual(to: "iPhone3,3"){         return "Verizon iPhone 4"     }     else if platform.isEqual(to: "iPhone4,1"){         return "iPhone 4S"     }     else if platform.isEqual(to: "iPhone5,1"){         return "iPhone 5 (GSM)"     }     else if platform.isEqual(to: "iPhone5,2"){         return "iPhone 5 (GSM+CDMA)"     }     else if platform.isEqual(to: "iPhone5,3"){         return "iPhone 5c (GSM)"     }     else if platform.isEqual(to: "iPhone5,4"){         return "iPhone 5c (GSM+CDMA)"     }     else if platform.isEqual(to: "iPhone6,1"){         return "iPhone 5s (GSM)"     }     else if platform.isEqual(to: "iPhone6,2"){         return "iPhone 5s (GSM+CDMA)"     }     else if platform.isEqual(to: "iPhone7,2"){         return "iPhone 6"     }     else if platform.isEqual(to: "iPhone7,1"){         return "iPhone 6 Plus"     }     else if platform.isEqual(to: "iPhone8,1"){         return "iPhone 6s"     }     else if platform.isEqual(to: "iPhone8,2"){         return "iPhone 6s Plus"     }     else if platform.isEqual(to: "iPhone8,4"){         return "iPhone SE"     }     else if platform.isEqual(to: "iPhone9,1"){         return "iPhone 7"     }     else if platform.isEqual(to: "iPhone9,2"){         return "iPhone 7 Plus"     }     else if platform.isEqual(to: "iPhone9,3"){         return "iPhone 7"     }     else if platform.isEqual(to: "iPhone9,4"){         return "iPhone 7 Plus"     }     else if platform.isEqual(to: "iPod1,1"){         return "iPod Touch 1G"     }     else if platform.isEqual(to: "iPod2,1"){         return "iPod Touch 2G"     }     else if platform.isEqual(to: "iPod3,1"){         return "iPod Touch 3G"     }     else if platform.isEqual(to: "iPod4,1"){         return "iPod Touch 4G"     }     else if platform.isEqual(to: "iPod5,1"){         return "iPod Touch 5G"     }     else if platform.isEqual(to: "iPad1,1"){         return "iPad"     }     else if platform.isEqual(to: "iPad2,1"){         return "iPad 2 (WiFi)"     }     else if platform.isEqual(to: "iPad2,2"){         return "iPad 2 (GSM)"     }     else if platform.isEqual(to: "iPad2,3"){         return "iPad 2 (CDMA)"     }     else if platform.isEqual(to: "iPad2,4"){         return "iPad 2 (WiFi)"     }     else if platform.isEqual(to: "iPad2,5"){         return "iPad Mini (WiFi)"     }     else if platform.isEqual(to: "iPad2,6"){         return "iPad Mini (GSM)"     }     else if platform.isEqual(to: "iPad2,7"){         return "iPad Mini (GSM+CDMA)"     }     else if platform.isEqual(to: "iPad3,1"){         return "iPad 3 (WiFi)"     }     else if platform.isEqual(to: "iPad3,2"){         return "iPad 3 (GSM+CDMA)"     }     else if platform.isEqual(to: "iPad3,3"){         return "iPad 3 (GSM)"     }     else if platform.isEqual(to: "iPad3,4"){         return "iPad 4 (WiFi)"     }     else if platform.isEqual(to: "iPad3,5"){         return "iPad 4 (GSM)"     }     else if platform.isEqual(to: "iPad3,6"){         return "iPad 4 (GSM+CDMA)"     }     else if platform.isEqual(to: "iPad4,1"){         return "iPad Air (WiFi)"     }     else if platform.isEqual(to: "iPad4,2"){         return "iPad Air (Cellular)"     }     else if platform.isEqual(to: "iPad4,3"){         return "iPad Air"     }     else if platform.isEqual(to: "iPad4,4"){         return "iPad Mini 2G (WiFi)"     }     else if platform.isEqual(to: "iPad4,5"){         return "iPad Mini 2G (Cellular)"     }     else if platform.isEqual(to: "iPad4,6"){         return "iPad Mini 2G";     }     else if platform.isEqual(to: "iPad4,7"){         return "iPad Mini 3 (WiFi)"     }     else if platform.isEqual(to: "iPad4,8"){         return "iPad Mini 3 (Cellular)"     }     else if platform.isEqual(to: "iPad4,9"){         return "iPad Mini 3 (China)"     }     else if platform.isEqual(to: "iPad5,3"){         return "iPad Air 2 (WiFi)"     }     else if platform.isEqual(to: "iPad5,4"){         return "iPad Air 2 (Cellular)"     }     else if platform.isEqual(to: "AppleTV2,1"){         return "Apple TV 2G"     }     else if platform.isEqual(to: "AppleTV3,1"){         return "Apple TV 3"     }     else if platform.isEqual(to: "AppleTV3,2"){         return "Apple TV 3 (2013)"     }     else if platform.isEqual(to: "i386"){         return "Simulator"     }     else if platform.isEqual(to: "x86_64"){         return "Simulator"     }     return platform } 
like image 58
Dharmbir Singh Avatar answered Sep 27 '22 23:09

Dharmbir Singh


Use this to get the device-model-identifier, like iPhone6,2 or iPhone 3,1. Then you can do an if statement and check, if the identifier is equal to a prefix and then you can assign the right name to a NSString.

Here is the code:

#import <sys/utsname.h>  NSString *deviceType; struct utsname systemInfo; uname(&systemInfo); deviceType = [NSString stringWithCString:systemInfo.machine                                 encoding:NSUTF8StringEncoding]; 
like image 24
David Gölzhäuser Avatar answered Sep 27 '22 22:09

David Gölzhäuser