iOS 애플리케이션 작업을 할 때 애플리케이션이 설치된 장치를 알아야 하고 사용 중인 장치에 따라 사용자 정의 기능을 제공해야 하는 경우가 있습니다. 예를 들어 iPhone X에서는 일부 기능을 제공하지만 iPhone 7에서는 제공하지 않으려고 합니다. 이 기사에서는 iOS 애플리케이션을 사용하여 사용 중인 iOS 기기를 찾는 방법을 알아보겠습니다.
원하는 결과를 얻기 위해 필요한 몇 가지 용어를 살펴보겠습니다.
utname - iOS의 Darwin 모듈에 있는 구조입니다.
이름 - uname은 utsname을 입력으로 받고 Int32를 출력으로 반환하는 함수입니다.
iOS SDK에서 사용 중인 기기를 찾는 것은 간단한 작업입니다. 모델이나 이름만 찾으면 아래 코드 중 하나를 사용할 수 있으며 반환으로 문자열이 제공됩니다.
- UIDevice.current.localizedModel
- UIDevice.current.model
- UIDevice.current.name
그러나 위의 코드는 사용 중인 정확한 장치가 아니라 iPhone이 사용 중임을 알려줍니다. 정확한 기기를 사용하려면 몇 가지 단계를 거쳐야 합니다.
목적 C에서는 다음과 같이 할 수 있습니다.
NSString* deviceName() {
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine, encoding:NSUTF8StringEncoding];
} 거울 − 모든 유형의 인스턴스에 대한 하위 구조 및 표시 스타일의 표현입니다.
Swift에서는 위에서 언급한 모든 용어를 사용하여 장치 번호를 출력으로 가져옵니다.
func getDevice() -> String {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce(“”) { identifier, element in
guard let value = element.value as? Int8 , value != 0 else { identifier }
identifier + String(UnicodeScalar(UInt8(value)))
}
return identifier
} 이 함수는 모델 코드를 제공하지만 정확한 장치 이름은 제공하지 않습니다.
요구 사항에 따라 모델 이름을 얻으려면 이 "식별자" 변수를 여러 값과 비교해야 합니다.
다음은 iPhone 7 plus 시뮬레이터에서 이 코드를 실행한 결과입니다.

Apple 장치의 일부 모델 코드와 해당 이름은 다음과 같습니다. -
| iPod4,1 | 아이팟 터치 4G |
| iPod5,1 | 아이팟 터치 5G |
| iPod7,1 | 아이팟 터치 6G |
| iPhone3,1, iPhone3,2, iPhone3,3 | 아이폰 4 |
| iPhone4 | iPhone 4s |
| iPhone7,2 | 아이폰 6 |
| iPhone7,1 | 아이폰 6 플러스 |
| iPhone8,1 | 아이폰 6s |
| iPhone8,2 | 아이폰 6s 플러스 |
| iPhone8,4 | 아이폰 SE |
| iPhone9,1, iPhone9,3 | 아이폰 7 |
| iPhone9,2, iPhone 9,4 | 아이폰 7 플러스 |
| iPad2,1, iPad2,2, iPad2,3, iPad2,4 | 아이패드 2 |
| iPad3,1, iPad3,2, iPad3,3 | 아이패드 3 |
| iPad3,4, iPad3,5, iPad3,6 | 아이패드 4 |
| iPad4,1, iPad4,2, iPad4,3 | 아이패드 에어 |
| iPad5,3, iPad5,4 | 아이패드 에어 2 |
| iPad2,5, iPad2,6, iPad2,7 | 아이패드 미니 |
| iPad4,4, iPad4,5, iPad4,6 | 아이패드 미니 2 |
| iPad4,7, iPad4,8, iPad4,9 | 아이패드 미니 3 |
| iPad5,1, iPad5,2 | 아이패드 미니 4 |
| iPad6,3, iPad6,4 | iPad Pro(9.7인치) |
| iPad6,7, iPad6,8 | iPad Pro(12.9인치) |