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

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


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}


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];


Here is a solution..

1) Define a device list with update iPhone 6s (8,1) and 6s plus (8,2) ::

//DeviceList#define HARDWARE @{@"i386": @"Simulator",@"x86_64": @"Simulator",@"iPod1,1": @"iPod Touch",@"iPod2,1": @"iPod Touch 2nd Generation",@"iPod3,1": @"iPod Touch 3rd Generation",@"iPod4,1": @"iPod Touch 4th Generation",@"iPhone1,1": @"iPhone",@"iPhone1,2": @"iPhone 3G",@"iPhone2,1": @"iPhone 3GS",@"iPhone3,1": @"iPhone 4",@"iPhone4,1": @"iPhone 4S",@"iPhone5,1": @"iPhone 5",@"iPhone5,2": @"iPhone 5",@"iPhone5,3": @"iPhone 5c",@"iPhone5,4": @"iPhone 5c",@"iPhone6,1": @"iPhone 5s",@"iPhone6,2": @"iPhone 5s",@"iPad1,1": @"iPad",@"iPad2,1": @"iPad 2",@"iPad3,1": @"iPad 3rd Generation ",@"iPad3,4": @"iPad 4th Generation ",@"iPad2,5": @"iPad Mini",@"iPad4,4": @"iPad Mini 2nd Generation - Wifi",@"iPad4,5": @"iPad Mini 2nd Generation - Cellular",@"iPad4,1": @"iPad Air 5th Generation - Wifi",@"iPad4,2": @"iPad Air 5th Generation - Cellular",@"iPhone7,1": @"iPhone 6 Plus",@"iPhone7,2": @"iPhone 6",@"iPhone8,1": @"iPhone 6S (GSM+CDMA)",@"iPhone8,2": @"iPhone 6S+ (GSM+CDMA)"}

2)Add header file::

#import <sys/utsname.h>

3) To get a device name::

    //To get the Device_name    struct utsname systemInfo;    uname(&systemInfo);    deviceName=[HARDWARE objectForKey:[NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]];    NSLog(@"Device Name::%@",deviceName);