From fb1f5ca59da6e39a09c3bead323c0943a8011382 Mon Sep 17 00:00:00 2001 From: Heiko Dreyer Date: Thu, 2 Oct 2014 15:59:10 +0200 Subject: [PATCH 1/2] Added iPhone 6 and 6 Plus --- UIDevice+HardwareModel.h | 8 ++++++-- UIDevice+HardwareModel.m | 10 +++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/UIDevice+HardwareModel.h b/UIDevice+HardwareModel.h index 93a756d..595d6de 100644 --- a/UIDevice+HardwareModel.h +++ b/UIDevice+HardwareModel.h @@ -1,7 +1,7 @@ // // UIDevice+HardwareModel.h // -// Created by Heiko Dreyer on 11.05.11. +// Created by Heiko Dreyer on 05/11/11. // Copyright 2011 boxedfolder.com. All rights reserved. // @@ -9,6 +9,7 @@ typedef enum __UIHardwareModel { + UIHardwareModelUnknown = 0, UIHardwareModelSimulator = 1, UIHardwareModeliPhone1G = 2, @@ -49,7 +50,10 @@ typedef enum __UIHardwareModel UIHardwareModeliPhone5cGlobal = 29, UIHardwareModeliPhone5s = 30, - UIHardwareModeliPhone5sGlobal = 31 + UIHardwareModeliPhone5sGlobal = 31, + + UIHardwareModeliPhone6 = 32, + UIHardwareModeliPhone6Plus = 33 } UIHardwareModel; diff --git a/UIDevice+HardwareModel.m b/UIDevice+HardwareModel.m index b613910..34df661 100644 --- a/UIDevice+HardwareModel.m +++ b/UIDevice+HardwareModel.m @@ -1,7 +1,7 @@ // // UIDevice+HardwareModel.m // -// Created by Heiko Dreyer on 11.05.11. +// Created by Heiko Dreyer on 05/11/11. // Copyright 2011 boxedfolder.com. All rights reserved. // @@ -131,6 +131,8 @@ -(UIHardwareModel)hardwareModel NSString *hwString = [NSString stringWithCString: model encoding: NSUTF8StringEncoding]; free(model); + + _hardwareModel = UIHardwareModelUnknown; // Unknown by default if([hwString isEqualToString: @"i386"] || [hwString isEqualToString:@"x86_64"]) _hardwareModel = UIHardwareModelSimulator; @@ -227,6 +229,12 @@ -(UIHardwareModel)hardwareModel if([hwString isEqualToString: @"iPad3,6"]) _hardwareModel = UIHardwareModeliPad4CDMA; + + if([hwString isEqualToString: @"iPhone7,1"]) + _hardwareModel = UIHardwareModeliPhone6Plus; + + if([hwString isEqualToString: @"iPhone7,2"]) + _hardwareModel = UIHardwareModeliPhone6; } return _hardwareModel; From 5073812bdffaa74ce051113143e60008849ac23b Mon Sep 17 00:00:00 2001 From: Sam Dean Date: Fri, 24 Oct 2014 11:40:20 +0100 Subject: [PATCH 2/2] Added raw device name to unknown type name to help differentiate new devices without needing an app store update --- UIDevice+HardwareModel.h | 5 +++-- UIDevice+HardwareModel.m | 38 ++++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/UIDevice+HardwareModel.h b/UIDevice+HardwareModel.h index 595d6de..03a2c2e 100644 --- a/UIDevice+HardwareModel.h +++ b/UIDevice+HardwareModel.h @@ -7,9 +7,10 @@ #import -typedef enum __UIHardwareModel +typedef NS_ENUM(NSInteger, UIHardwareModel) { UIHardwareModelUnknown = 0, + UIHardwareModelSimulator = 1, UIHardwareModeliPhone1G = 2, @@ -55,7 +56,7 @@ typedef enum __UIHardwareModel UIHardwareModeliPhone6 = 32, UIHardwareModeliPhone6Plus = 33 -} UIHardwareModel; +}; @interface UIDevice (HardwareModel) diff --git a/UIDevice+HardwareModel.m b/UIDevice+HardwareModel.m index 34df661..34d4372 100644 --- a/UIDevice+HardwareModel.m +++ b/UIDevice+HardwareModel.m @@ -10,9 +10,24 @@ @implementation UIDevice (HardwareModel) +- (NSString *)rawHardwareName +{ + size_t size; + char *model; + + sysctlbyname("hw.machine", NULL, &size, NULL, 0); + model = malloc(size * sizeof(char)); + sysctlbyname("hw.machine", model, &size, NULL, 0); + + NSString *hwString = [NSString stringWithCString: model encoding: NSUTF8StringEncoding]; + free(model); + + return hwString; +} + - (NSString *)hardwareName { - NSString *name = @"Unknown"; + NSString *name = nil; switch ([self hardwareModel]) { case UIHardwareModeliPad: @@ -109,30 +124,21 @@ - (NSString *)hardwareName name = @"Simulator"; break; default: - name = @"Unknown"; + // Append the raw device name to the response to differentiate new devices + name = [NSString stringWithFormat:@"Unknown - %@", [self rawHardwareName]]; break; } return name; } --(UIHardwareModel)hardwareModel +- (UIHardwareModel)hardwareModel { - static UIHardwareModel _hardwareModel; + static UIHardwareModel _hardwareModel = UIHardwareModelUnknown; - if(!_hardwareModel) + if (_hardwareModel == UIHardwareModelUnknown) { - size_t size; - char *model; - - sysctlbyname("hw.machine", NULL, &size, NULL, 0); - model = malloc(size); - sysctlbyname("hw.machine", model, &size, NULL, 0); - - NSString *hwString = [NSString stringWithCString: model encoding: NSUTF8StringEncoding]; - free(model); - - _hardwareModel = UIHardwareModelUnknown; // Unknown by default + NSString *hwString = [self rawHardwareName]; if([hwString isEqualToString: @"i386"] || [hwString isEqualToString:@"x86_64"]) _hardwareModel = UIHardwareModelSimulator;