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


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

讓我們瞭解一些實現預期結果所需的概念,

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

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

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

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

但是以上程式碼無法確定正在使用的確切裝置,它只能告訴我們正在使用 iPhone。要獲取正在使用的確切裝置,我們需要執行一些步驟。

在 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”變數與多個值進行比較,以根據需求獲取模型名稱。

以下是在 iOS 12.0 版本的模擬器上執行 iPhone 7 Plus 時程式碼執行情況的示例

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

iPod4,1iPod Touch 4G
iPod5,1iPod Touch 5G
iPod7,1iPod Touch 6G
iPhone3,1 , iPhone3,2 , iPhone3,3iPhone 4
iPhone4,iPhone 4s
iPhone5,1 , iPhone5,2iPhone 5
iPhone5,3 , iPhone5,4iPhone 5c
iPhone6,1 , iPhone6,2iPhone 5s
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日

678 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.