如何使用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,1 | iPod Touch 4G |
iPod5,1 | iPod Touch 5G |
iPod7,1 | iPod Touch 6G |
iPhone3,1 , iPhone3,2 , iPhone3,3 | iPhone 4 |
iPhone 4 | iPhone 4s |
iPhone7,2 | iPhone 6 |
iPhone7,1 | iPhone 6 Plus |
iPhone8,1 | iPhone 6s |
iPhone8,2 | iPhone 6s Plus |
iPhone8,4 | iPhone SE |
iPhone9,1 , iPhone9,3 | iPhone 7 |
iPhone9,2 , iPhone 9,4 | iPhone 7 Plus |
iPad2,1 , iPad2,2 , iPad2,3 , iPad2,4 | iPad 2 |
iPad3,1 , iPad3,2 , iPad3,3 | iPad 3 |
iPad3,4 , iPad3,5 , iPad3,6 | iPad 4 |
iPad4,1 , iPad4,2 , iPad4,3 | iPad Air |
iPad5,3 , iPad5,4 | iPad Air 2 |
iPad2,5 , iPad2,6 , iPad2,7 | iPad Mini |
iPad4,4 , iPad4,5 , iPad4,6 | iPad Mini 2 |
iPad4,7 , iPad4,8 , iPad4,9 | iPad Mini 3 |
iPad5,1 , iPad5,2 | iPad Mini 4 |
iPad6,3 , iPad6,4 | iPad Pro (9.7英寸) |
iPad6,7 , iPad6,8 | iPad Pro (12.9英寸) |
廣告