如何使用iPhone SDK確定裝置型別(iPhone、iPod Touch)?


在開發iOS應用程式時,有時我們需要知道安裝應用程式的裝置,並根據使用的裝置提供自定義功能。例如,我們想在iPhone X上提供一些功能,但在iPhone 7上不提供。在本文中,我們將學習如何使用iOS應用程式查詢正在使用的iOS裝置。

讓我們來看一些實現預期結果所需的一些術語:

utsname − 這是iOS的Darwin模組中的一個結構。

uname − uname是一個函式,它以utsname作為輸入,並返回Int32作為輸出。

如果我們只需要查詢型號或名稱,那麼在iOS SDK上查詢正在使用的裝置是一項簡單的任務,我們可以使用以下任何程式碼,它將返回一個字串。

  • UIDevice.current.localizedModel
  • UIDevice.current.model
  • UIDevice.current.name

但是上述程式碼不能精確地顯示正在使用的裝置,它只能告訴我們正在使用iPhone。要獲得正在使用的確切裝置,我們必須經歷一些步驟。

在Objective-C中,我們可以這樣做:

NSString* deviceName() {
   struct utsname systemInfo;
   uname(&systemInfo);
   return [NSString stringWithCString:systemInfo.machine, encoding:NSUTF8StringEncoding];
}

Mirror − 任何型別例項的子結構和顯示樣式的表示。

在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
}

此函式提供型號程式碼,但並非裝置的精確名稱。

我們將必須將此“identifier”變數與多個值進行比較,以根據需要獲取型號名稱。

以下是將此程式碼在iPhone 7 Plus模擬器上執行的結果。

一些蘋果裝置的型號程式碼及其對應的名稱:

iPod4,1iPod Touch 4G
iPod5,1iPod Touch 5G
iPod7,1iPod Touch 6G
iPhone3,1 , iPhone3,2 , iPhone3,3iPhone 4
iPhone 4iPhone 4s
iPhone7,2iPhone 6
iPhone7,1iPhone 6 Plus
iPhone8,1iPhone 6s
iPhone8,2iPhone 6s Plus
iPhone8,4iPhone SE
iPhone9,1 , iPhone9,3iPhone 7
iPhone9,2 , iPhone 9,4iPhone 7 Plus
iPad2,1 , iPad2,2 , iPad2,3 , iPad2,4iPad 2
iPad3,1 , iPad3,2 , iPad3,3iPad 3
iPad3,4 , iPad3,5 , iPad3,6iPad 4
iPad4,1 , iPad4,2 , iPad4,3iPad Air
iPad5,3 , iPad5,4iPad Air 2
iPad2,5 , iPad2,6 , iPad2,7iPad Mini
iPad4,4 , iPad4,5 , iPad4,6iPad Mini 2
iPad4,7 , iPad4,8 , iPad4,9iPad Mini 3
iPad5,1 , iPad5,2iPad Mini 4
iPad6,3 , iPad6,4iPad Pro (9.7英寸)
iPad6,7 , iPad6,8iPad Pro (12.9英寸)

更新於:2020年6月27日

瀏覽量:374

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告