Develop
2014.05.24 21:54
[ios] iOS에서 디바이스 종류 알아오기
조회 수 3654 댓글 0
다음과 같은 함수를 작성
# 플랫폼 체크
+ (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; }
위의 함수는 클래스 함수로 정의하였으나 인스턴스 함수로 정의하여도 동작함
# 버전 체크
+ (int) machine { NSString *platform = [self platform]; /* iPhone */ if ([platform isEqualToString:@"iPhone1,1"]) return 1;// @"iPhone 2G"; if ([platform isEqualToString:@"iPhone1,2"]) return 2;// @"iPhone 3G"; if ([platform isEqualToString:@"iPhone2,1"]) return 3;// @"iPhone 3GS"; if ([platform isEqualToString:@"iPhone3,1"]) return 4;// @"iPhone 4"; if ([platform isEqualToString:@"iPhone3,3"]) return 4;// @"Verizon iPhone 4"; if ([platform isEqualToString:@"iPhone4,1"]) return 5;// @"iPhone 4S"; if ([platform isEqualToString:@"iPhone5,1"]) return 6;// @"iPhone 5 (GSM)"; if ([platform isEqualToString:@"iPhone5,2"]) return 6;// @"iPhone 5 (GSM+CDMA)"; if ([platform isEqualToString:@"iPhone5,3"]) return 6;// @"iPhone 5C (GSM)"; if ([platform isEqualToString:@"iPhone5,4"]) return 6;// @"iPhone 5C (Global)"; if ([platform isEqualToString:@"iPhone6,1"]) return 7;// @"iPhone 5S (GSM)"; if ([platform isEqualToString:@"iPhone6,3"]) return 7;// @"iPhone 5S (Global)"; /* iPod Touch */ if ([platform isEqualToString:@"iPod1,1"]) return 11;// @"iPod Touch 1G"; if ([platform isEqualToString:@"iPod2,1"]) return 12;// @"iPod Touch 2G"; if ([platform isEqualToString:@"iPod3,1"]) return 13;// @"iPod Touch 3G"; if ([platform isEqualToString:@"iPod4,1"]) return 14;// @"iPod Touch 4G"; if ([platform isEqualToString:@"iPod5,1"]) return 15;// @"iPod Touch 5G"; /* iPad */ if ([platform isEqualToString:@"iPad1,1"]) return 1;// @"iPad"; if ([platform isEqualToString:@"iPad2,1"]) return 2;// @"iPad 2 (WiFi)"; if ([platform isEqualToString:@"iPad2,2"]) return 2;// @"iPad 2 (GSM)"; if ([platform isEqualToString:@"iPad2,3"]) return 2;// @"iPad 2 (CDMA)"; if ([platform isEqualToString:@"iPad2,4"]) return 2;// @"iPad 2 (Wi‑Fi Rev A)"; if ([platform isEqualToString:@"iPad2,5"]) return 4;// @"iPad mini (WiFi)"; if ([platform isEqualToString:@"iPad2,6"]) return 4;// @"iPad mini (GSM)"; if ([platform isEqualToString:@"iPad2,7"]) return 4;// @"iPad mini (GSM+CDMA)"; if ([platform isEqualToString:@"iPad3,1"]) return 3;// @"iPad 3 (WiFi)"; if ([platform isEqualToString:@"iPad3,2"]) return 3;// @"iPad 3 (GSM+CDMA)"; if ([platform isEqualToString:@"iPad3,3"]) return 3;// @"iPad 3 (GSM)"; if ([platform isEqualToString:@"iPad3,4"]) return 4;// @"New iPad (WiFi)"; if ([platform isEqualToString:@"iPad3,5"]) return 4;// @"New iPad (GSM)"; if ([platform isEqualToString:@"iPad3,6"]) return 4;// @"New iPad (GSM+CDMA)"; if ([platform isEqualToString:@"iPad4,1"]) return 5;// @"iPad Air (WiFi)"; if ([platform isEqualToString:@"iPad4,2"]) return 5;// @"iPad Air (Cellular)"; if ([platform isEqualToString:@"iPad4,4"]) return 5;// @"iPad mini Retina (WiFi)"; if ([platform isEqualToString:@"iPad4,4"]) return 5;// @"iPad mini Retina (Cellular)"; /* Simulator */ if ([platform isEqualToString:@"i386"]) return 3;// @"Simulator"; return 0; }
# 체크 사항
현재 위의 코드를 실행하면 Implicit declaration of function ‘sysctlbyname’ is invalid in C99 이라는 warning이 발생하지만 실행에는 문제가 없음.
[참고] http://theiphonewiki.com/wiki/Models
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
193 | Develop | [api] 인스타그램에서 최신 이미지 가져오기 (Using Instagram API) 20 | hooni | 2018.04.05 | 12390 |
192 | Develop | [php] php5.3부터는 eregi()대신 preg_match()를 사용 | hooni | 2013.11.18 | 12477 |
191 | Develop | [ios] 네트워크 인디케이터(NetworkActivityIndicator) 작동 | hooni | 2014.01.24 | 12493 |
190 | Develop | [c] flooding 알고리즘 미로 찾기(도스용) 소스코드 9 | hooni | 2003.04.23 | 12515 |
189 | Develop | [c++] Win32 API 기본 출력인 MessageBox() 함수 사용 예제.. | hooni | 2013.04.23 | 12643 |
188 | Develop | [html] HTML5 튜토리얼 링크 ㅋㅋ | hooni | 2013.04.23 | 12814 |
187 | Develop | [doc] UI개발시 유용한 소프트웨어 (개발 및 디버깅 툴) | hooni | 2013.04.23 | 12911 |
186 | Develop | [c] 다중연결 서버 만들기 #1 - fork() 사용 | hooni | 2013.04.23 | 12921 |
185 | Develop | [js] 자바스크립트의 클로저 (JavaScript's Closure) | hooni | 2013.05.15 | 12979 |
184 | Develop | [php] 심플한 게시판 ㅋㅋ 1 | hooni | 2013.04.23 | 12993 |
183 | Develop | [js] AngularJS를 소개합니다. | hooni | 2014.01.06 | 13017 |
182 | Develop | [html] 캐쉬된 웹페이지 사용하지 않도록 하는 방법 | hooni | 2003.04.23 | 13028 |