Computer >> 컴퓨터 >  >> 프로그램 작성 >> IOS

iPhone SDK를 사용하여 장치 유형(iPhone, iPod Touch)을 확인하는 방법은 무엇입니까?

<시간/>

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 시뮬레이터에서 이 코드를 실행한 결과입니다.

iPhone SDK를 사용하여 장치 유형(iPhone, iPod Touch)을 확인하는 방법은 무엇입니까?

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