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인치) |