1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | import UIKit class ViewController : UIViewController { override func viewDidLoad() { super .viewDidLoad() //應用程式資訊 let infoDictionary = Bundle .main.infoDictionary! let appDisplayName = infoDictionary[ "CFBundleDisplayName" ] //程式名稱 let majorVersion = infoDictionary[ "CFBundleShortVersionString" ] //主程式版本号 let minorVersion = infoDictionary[ "CFBundleVersion" ] //版本号(内部标示) let appVersion = majorVersion as ! String //裝置資訊 let iosVersion = UIDevice .current.systemVersion //iOS版本 let identifierNumber = UIDevice .current.identifierForVendor //裝置udid let systemName = UIDevice .current.systemName //裝置名稱 let model = UIDevice .current.model //裝置型号 let modelName = UIDevice .current.modelName //裝置具體型号 let localizedModel = UIDevice .current.localizedModel //裝置區域化型号如A1533 //列印資訊 print ( "程式名稱:\(appDisplayName)" ) print ( "主程式版本号:\(appVersion)" ) print ( "内部版本号:\(minorVersion)" ) print ( "iOS版本:\(iosVersion)" ) print ( "裝置udid:\(identifierNumber)" ) print ( "裝置名稱:\(systemName)" ) print ( "裝置型号:\(model)" ) print ( "裝置具體型号:\(modelName)" ) print ( "裝置區域化型号:\(localizedModel)" ) } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } } //擴充UIDevice extension UIDevice { //擷取裝置具體詳細的型号 var modelName: 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 { return identifier } return identifier + String ( UnicodeScalar ( UInt8 (value))) } switch identifier { case "iPod5,1" : return "iPod Touch 5" case "iPod7,1" : return "iPod Touch 6" case "iPhone3,1" , "iPhone3,2" , "iPhone3,3" : return "iPhone 4" case "iPhone4,1" : return "iPhone 4s" case "iPhone5,1" , "iPhone5,2" : return "iPhone 5" case "iPhone5,3" , "iPhone5,4" : return "iPhone 5c" case "iPhone6,1" , "iPhone6,2" : return "iPhone 5s" case "iPhone7,2" : return "iPhone 6" case "iPhone7,1" : return "iPhone 6 Plus" case "iPhone8,1" : return "iPhone 6s" case "iPhone8,2" : return "iPhone 6s Plus" case "iPhone9,1" : return "iPhone 7 (CDMA)" case "iPhone9,3" : return "iPhone 7 (GSM)" case "iPhone9,2" : return "iPhone 7 Plus (CDMA)" case "iPhone9,4" : return "iPhone 7 Plus (GSM)" case "iPad2,1" , "iPad2,2" , "iPad2,3" , "iPad2,4" : return "iPad 2" case "iPad3,1" , "iPad3,2" , "iPad3,3" : return "iPad 3" case "iPad3,4" , "iPad3,5" , "iPad3,6" : return "iPad 4" case "iPad4,1" , "iPad4,2" , "iPad4,3" : return "iPad Air" case "iPad5,3" , "iPad5,4" : return "iPad Air 2" case "iPad2,5" , "iPad2,6" , "iPad2,7" : return "iPad Mini" case "iPad4,4" , "iPad4,5" , "iPad4,6" : return "iPad Mini 2" case "iPad4,7" , "iPad4,8" , "iPad4,9" : return "iPad Mini 3" case "iPad5,1" , "iPad5,2" : return "iPad Mini 4" case "iPad6,7" , "iPad6,8" : return "iPad Pro" case "AppleTV5,3" : return "Apple TV" case "i386" , "x86_64" : return "Simulator" default : return identifier } } } |