Nimrod Shai
Nimrod Shai

Reputation: 1179

How to know device type

I am trying to figure out a simple way of knowing what is my Device type.

I already know about

  [[UIDevice currentDevice] systemVersion]

which give me the general type.

But what I really need is to now wether it is 4, 4S, 5 or any other type of iPhone.

Upvotes: 1

Views: 1292

Answers (4)

Anil Kothari
Anil Kothari

Reputation: 7733

In the UIDevice Class a property to find out type of iPhone:

@property(nonatomic,readonly,retain) NSString    *systemVersion;     // e.g. @"4.0"

Upvotes: 0

DaGaMs
DaGaMs

Reputation: 1557

I updated the list with the currently available devices. I suggest to make a category on UIDevice, let's call it UIDevice+Platform, and add the following two methods:

- (NSString *)rawPlatform
{
    static NSString *platform = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        size_t size;
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);
        char *machine = malloc(size);
        sysctlbyname("hw.machine", machine, &size, NULL, 0);
        platform = [NSString stringWithUTF8String:machine];
        free(machine);
    });
    return platform;
}

- (NSString *)exactModel
{
    static NSString *platform = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        platform = [self rawPlatform];
        if ([platform isEqualToString:@"iPhone1,1"])
            platform = @"iPhone 1G";
        else if ([platform isEqualToString:@"iPhone1,2"])
            platform = @"iPhone 3G";
        else if ([platform isEqualToString:@"iPhone2,1"])
            platform = @"iPhone 3GS";
        else if ([platform isEqualToString:@"iPhone3,1"])
            platform = @"iPhone 4";
        else if ([platform isEqualToString:@"iPhone3,3"])
            platform = @"Verizon iPhone 4";
        else if ([platform isEqualToString:@"iPhone4,1"])
            platform = @"iPhone 4S";
        else if ([platform isEqualToString:@"iPhone5,1"])
            platform = @"iPhone 5";
        else if ([platform isEqualToString:@"iPhone5,2"])
            platform = @"iPhone 5 (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPhone5,3"])
            platform = @"iPhone 5C";
        else if ([platform isEqualToString:@"iPhone5,4"])
            platform = @"iPhone 5C (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPhone6,1"])
            platform = @"iPhone 5S";
        else if ([platform isEqualToString:@"iPhone6,2"])
            platform = @"iPhone 5S (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPhone7,1"])
            platform = @"iPhone 6+";
        else if ([platform isEqualToString:@"iPhone7,2"])
            platform = @"iPhone 6";
        else if ([platform isEqualToString:@"iPod1,1"])
            platform = @"iPod Touch 1G";
        else if ([platform isEqualToString:@"iPod2,1"])
            platform = @"iPod Touch 2G";
        else if ([platform isEqualToString:@"iPod3,1"])
            platform = @"iPod Touch 3G";
        else if ([platform isEqualToString:@"iPod4,1"])
            platform = @"iPod Touch 4G";
        else if ([platform isEqualToString:@"iPod5,1"])
            platform = @"iPod Touch 5G";
        else if ([platform isEqualToString:@"iPad1,1"])
            platform =  @"iPad 1";
        else if ([platform isEqualToString:@"iPad2,1"])
            platform = @"iPad 2 (WiFi)";
        else if ([platform isEqualToString:@"iPad2,2"])
            platform =  @"iPad 2 (GSM)";
        else if ([platform isEqualToString:@"iPad2,3"])
            platform = @"iPad 2 (CDMA)";
        else if ([platform isEqualToString:@"iPad2,1"])
            platform = @"iPad 2 (WiFi)";
        else if ([platform isEqualToString:@"iPad2,2"])
            platform =  @"iPad 2 (GSM)";
        else if ([platform isEqualToString:@"iPad2,3"])
            platform = @"iPad 2 (CDMA)";
        else if ([platform isEqualToString:@"iPad2,4"])
            platform = @"iPad 2";
        else if ([platform isEqualToString:@"iPad2,5"])
            platform = @"iPad Mini (Wifi)";
        else if ([platform isEqualToString:@"iPad2,6"])
            platform = @"iPad Mini";
        else if ([platform isEqualToString:@"iPad2,7"])
            platform = @"iPad Mini (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPad3,1"])
            platform = @"iPad 3 (WiFi)";
        else if ([platform isEqualToString:@"iPad3,2"])
            platform = @"iPad 3 (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPad3,3"])
            platform = @"iPad 3 (4G,3)";
        else if ([platform isEqualToString:@"iPad3,4"])
            platform = @"iPad 4 (WiFi)";
        else if ([platform isEqualToString:@"iPad3,5"])
            platform = @"iPad 4 (4G,2)";
        else if ([platform isEqualToString:@"iPad3,6"])
            platform = @"iPad 4 (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPad4,1"])
            platform = @"iPad Air (Wifi)";
        else if ([platform isEqualToString:@"iPad4,2"])
            platform = @"iPad Air (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPad4,3"])
            platform = @"iPad Air";
        else if ([platform isEqualToString:@"iPad4,4"])
            platform = @"iPad Mini 2 (GSM)";
        else if ([platform isEqualToString:@"iPad4,5"])
            platform = @"iPad Mini 2 (CDMA)";
        else if ([platform isEqualToString:@"iPad4,6"])
            platform = @"iPad Mini 2 (Wifi)";
        else if ([platform isEqualToString:@"iPad4,7"])
            platform = @"iPad Mini 3 (Wifi)";
        else if ([platform isEqualToString:@"iPad4,8"])
            platform = @"iPad Mini 3 (GSM+CDMA)";
        else if ([platform isEqualToString:@"iPad4,9"])
            platform = @"iPad Mini 3";
        else if ([platform isEqualToString:@"iPad5,3"])
            platform = @"iPad Air 2 (Wifi)";
        else if ([platform isEqualToString:@"iPad5,4"])
            platform = @"iPad Air 2 (GSM+CDMA)";
        else if ([platform isEqualToString:@"i386"])
            platform = @"Simulator";
        else if ([platform isEqualToString:@"x86_64"])
            platform = @"Simulator";
    });

    return platform;
}

Upvotes: 1

Talha
Talha

Reputation: 809

you can get your platform and device type by using this method

- (NSString *) platformString{
    // Gets a string with the device model
    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];  
    free(machine); 
    if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 2G";
    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,2"])    return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"])    return @"iPhone 4 (CDMA)";    
    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";

    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch (1 Gen)";
    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch (2 Gen)";
    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch (3 Gen)";
    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch (4 Gen)";
    if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch (5 Gen)";

    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([platform isEqualToString:@"iPad1,2"])      return @"iPad 3G";
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2";
    if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
    if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini";
    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";
    if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
    if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4";
    if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";

    if ([platform isEqualToString:@"i386"])         return @"Simulator";
    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";
    return platform;
}

Upvotes: 7

Paras Joshi
Paras Joshi

Reputation: 20541

Hi use this class for get Device types and Device Version from this bellow link..

UIDeviceHardware

just read the instruction that how to use and how to get the platform...

Here you got response like for Example... Verizon iPhone 4,iPhone 4S,iPod Touch 1G,iPod Touch 2G,etc..

i hope this helpful to you...

Upvotes: 1

Related Questions