Skip to content

Instantly share code, notes, and snippets.

Revisions

  1. skyless revised this gist Sep 28, 2013. No changes.
  2. skyless renamed this gist Sep 28, 2013. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. @dmcrodrigues dmcrodrigues revised this gist Feb 11, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion UIDevice+DeviceHardware.h
    Original file line number Diff line number Diff line change
    @@ -24,7 +24,7 @@ typedef enum {
    UIDeviceHardwareiPadMini,
    UIDeviceHardwareiPad3,
    UIDeviceHardwareiPad4,
    UIDeviceHardwareSimulator
    UIDeviceHardwareSimulator,
    UIDeviceHardwareUnknown
    } UIDeviceHardware;

  4. @dmcrodrigues dmcrodrigues revised this gist Feb 11, 2013. 5 changed files with 126 additions and 59 deletions.
    36 changes: 36 additions & 0 deletions UIDevice+DeviceHardware.h
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,36 @@
    //
    // UIDevice+DeviceHardware.h
    //
    // Used to determine EXACT version of device software is running on.

    #import <Foundation/Foundation.h>
    #include <sys/types.h>
    #include <sys/sysctl.h>

    typedef enum {
    UIDeviceHardwareiPhone1,
    UIDeviceHardwareiPhone3G,
    UIDeviceHardwareiPhone3GS,
    UIDeviceHardwareiPhone4,
    UIDeviceHardwareiPhone4S,
    UIDeviceHardwareiPhone5,
    UIDeviceHardwareiPod1,
    UIDeviceHardwareiPod2,
    UIDeviceHardwareiPod3,
    UIDeviceHardwareiPod4,
    UIDeviceHardwareiPod5,
    UIDeviceHardwareiPad1,
    UIDeviceHardwareiPad2,
    UIDeviceHardwareiPadMini,
    UIDeviceHardwareiPad3,
    UIDeviceHardwareiPad4,
    UIDeviceHardwareSimulator
    UIDeviceHardwareUnknown
    } UIDeviceHardware;

    @interface UIDevice (DeviceHardware)

    - (UIDeviceHardware)hardware;
    - (NSString *)hardwareString;

    @end
    89 changes: 89 additions & 0 deletions UIDevice+DeviceHardware.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,89 @@
    //
    // UIDevice+DeviceHardware.m
    //
    // Used to determine EXACT version of device software is running on.

    #import "UIDevice+DeviceHardware.h"

    @implementation UIDevice (DeviceHardware)

    - (NSString *)fetchDeviceHardware
    {
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = (char *) malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *hardware = [NSString stringWithUTF8String:machine];
    free(machine);
    return hardware;
    }

    - (UIDeviceHardware)hardware
    {
    NSString *platform = [self fetchDeviceHardware];
    if ([platform isEqualToString:@"iPhone1,1"]) return UIDeviceHardwareiPhone1;
    if ([platform isEqualToString:@"iPhone1,2"]) return UIDeviceHardwareiPhone3G;
    if ([platform isEqualToString:@"iPhone2,1"]) return UIDeviceHardwareiPhone3GS;
    if ([platform isEqualToString:@"iPhone3,1"]) return UIDeviceHardwareiPhone4;
    if ([platform isEqualToString:@"iPhone3,3"]) return UIDeviceHardwareiPhone4S;
    if ([platform isEqualToString:@"iPhone4,1"]) return UIDeviceHardwareiPhone4S;
    if ([platform isEqualToString:@"iPhone5,1"]) return UIDeviceHardwareiPhone5;
    if ([platform isEqualToString:@"iPhone5,2"]) return UIDeviceHardwareiPhone5;
    if ([platform isEqualToString:@"iPod1,1"]) return UIDeviceHardwareiPod1;
    if ([platform isEqualToString:@"iPod2,1"]) return UIDeviceHardwareiPod2;
    if ([platform isEqualToString:@"iPod3,1"]) return UIDeviceHardwareiPod3;
    if ([platform isEqualToString:@"iPod4,1"]) return UIDeviceHardwareiPod4;
    if ([platform isEqualToString:@"iPod5,1"]) return UIDeviceHardwareiPod5;
    if ([platform isEqualToString:@"iPad1,1"]) return UIDeviceHardwareiPad1;
    if ([platform isEqualToString:@"iPad2,1"]) return UIDeviceHardwareiPad2;
    if ([platform isEqualToString:@"iPad2,2"]) return UIDeviceHardwareiPad2;
    if ([platform isEqualToString:@"iPad2,3"]) return UIDeviceHardwareiPad2;
    if ([platform isEqualToString:@"iPad2,5"]) return UIDeviceHardwareiPadMini;
    if ([platform isEqualToString:@"iPad2,6"]) return UIDeviceHardwareiPadMini;
    if ([platform isEqualToString:@"iPad2,7"]) return UIDeviceHardwareiPadMini;
    if ([platform isEqualToString:@"iPad3,1"]) return UIDeviceHardwareiPad3;
    if ([platform isEqualToString:@"iPad3,2"]) return UIDeviceHardwareiPad3;
    if ([platform isEqualToString:@"iPad3,3"]) return UIDeviceHardwareiPad3;
    if ([platform isEqualToString:@"iPad3,4"]) return UIDeviceHardwareiPad4;
    if ([platform isEqualToString:@"iPad3,5"]) return UIDeviceHardwareiPad4;
    if ([platform isEqualToString:@"iPad3,6"]) return UIDeviceHardwareiPad4;
    if ([platform isEqualToString:@"i386"]) return UIDeviceHardwareSimulator;
    if ([platform isEqualToString:@"x86_64"]) return UIDeviceHardwareSimulator;
    return UIDeviceHardwareUnknown;
    }

    - (NSString *)hardwareString
    {
    NSString *platform = [self fetchDeviceHardware];
    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 (GSM)";
    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 (GSM)";
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
    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,5"]) return @"iPad Mini";
    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";
    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";
    if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)";
    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;
    }

    @end
    13 changes: 0 additions & 13 deletions UIDeviceHardware.h
    Original file line number Diff line number Diff line change
    @@ -1,13 +0,0 @@
    //
    // UIDeviceHardware.h
    //
    // Used to determine EXACT version of device software is running on.

    #import <Foundation/Foundation.h>

    @interface UIDeviceHardware : NSObject

    - (NSString *) platform;
    - (NSString *) platformString;

    @end
    43 changes: 0 additions & 43 deletions UIDeviceHardware.m
    Original file line number Diff line number Diff line change
    @@ -1,43 +0,0 @@
    //
    // UIDeviceHardware.m
    //
    // Used to determine EXACT version of device software is running on.

    #import "UIDeviceHardware.h"
    #include <sys/types.h>
    #include <sys/sysctl.h>

    @implementation UIDeviceHardware

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

    - (NSString *) platformString{
    NSString *platform = [self 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:@"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:@"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:@"i386"]) return @"Simulator";
    if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
    return platform;
    }

    @end
    4 changes: 1 addition & 3 deletions usage.txt
    Original file line number Diff line number Diff line change
    @@ -1,3 +1 @@
    UIDeviceHardware *h=[[UIDeviceHardware alloc] init];
    [self setDeviceModel:[h platformString]];
    [h release];
    UIDeviceHardware hardware = [UIDevice currentDevice].hardware;
  5. @Jaybles Jaybles created this gist Oct 28, 2011.
    13 changes: 13 additions & 0 deletions UIDeviceHardware.h
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    //
    // UIDeviceHardware.h
    //
    // Used to determine EXACT version of device software is running on.

    #import <Foundation/Foundation.h>

    @interface UIDeviceHardware : NSObject

    - (NSString *) platform;
    - (NSString *) platformString;

    @end
    43 changes: 43 additions & 0 deletions UIDeviceHardware.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    //
    // UIDeviceHardware.m
    //
    // Used to determine EXACT version of device software is running on.

    #import "UIDeviceHardware.h"
    #include <sys/types.h>
    #include <sys/sysctl.h>

    @implementation UIDeviceHardware

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

    - (NSString *) platformString{
    NSString *platform = [self 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:@"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:@"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:@"i386"]) return @"Simulator";
    if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
    return platform;
    }

    @end
    3 changes: 3 additions & 0 deletions usage.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    UIDeviceHardware *h=[[UIDeviceHardware alloc] init];
    [self setDeviceModel:[h platformString]];
    [h release];