获取苹果设备的标识等其他信息,以及App版本名字相关信息等
public extension UIDevice {
class Model {
//MARK: - 设备的具体型号 See: https://www.theiphonewiki.com/wiki/Models
public class var Name: 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 "iPodTouch5"
case "iPod7,1": return "iPodTouch6"
case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone4"
case "iPhone4,1": return "iPhone4s"
case "iPhone5,1", "iPhone5,2": return "iPhone5"
case "iPhone5,3", "iPhone5,4": return "iPhone5c"
case "iPhone6,1", "iPhone6,2": return "iPhone5s"
case "iPhone7,2": return "iPhone6"
case "iPhone7,1": return "iPhone6Plus"
case "iPhone8,1": return "iPhone6s"
case "iPhone8,2": return "iPhone6sPlus"
case "iPhone8,4": return "iPhoneSE"
case "iPhone9,1", "iPhone9,3": return "iPhone7"
case "iPhone9,2", "iPhone9,4": return "iPhone7Plus"
case "iPhone10,1", "iPhone10,4": return "iPhone8"
case "iPhone10,5", "iPhone10,2": return "iPhone8Plus"
case "iPhone10,3", "iPhone10,6": return "iPhoneX"
case "iPhone11,2": return "iPhoneXS"
case "iPhone11,6": return "iPhoneXSMAX"
case "iPhone11,8": return "iPhoneXR"
case "iPhone12,1": return "iPhone11"
case "iPhone12,3": return "iPhone11Pro"
case "iPhone12,5": return "iPhone11ProMax"
case "iPhone12,8": return "iPhoneSE(2nd generation)"
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4": return "iPad2"
case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad3"
case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad4"
case "iPad4,1", "iPad4,2", "iPad4,3": return "iPadAir"
case "iPad5,3", "iPad5,4": return "iPadAir2"
case "iPad2,5", "iPad2,6", "iPad2,7": return "iPadMini"
case "iPad4,4", "iPad4,5", "iPad4,6": return "iPadMini2"
case "iPad4,7", "iPad4,8", "iPad4,9": return "iPadMini3"
case "iPad5,1", "iPad5,2": return "iPadMini4"
case "iPad6,7", "iPad6,8": return "iPadPro"
case "AppleTV5,3": return "AppleTV"
case "i386", "x86_64": return "Simulator"
default: return identifier
}
}
/// iPhoneX (机型判断---!!!适用于真机)
public class var iPhoneX: Bool {
if self.identifier == "iPhone10,3" ||
self.identifier == "iPhone10,6" {
return true
}
return false
}
}
}
//MARK: - 设备的系统
public extension UIDevice {
class System {
/// 系统版本
public class var vsrsion: String {
return UIDevice.current.systemVersion
}
/// uuid
public class var udid: String {
return UIDevice.current.identifierForVendor?.uuidString ?? ""
}
/// 设备名字
public class var deviceName: String {
return UIDevice.current.name
}
}
}
//MARK: - App信息
public extension UIDevice {
class App {
/// app版本version
public class var vsrsion: String {
return "\(Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0")"
}
/// app版本build
public class var build: String {
return "\(Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0")"
}
/// app名字DisplayName
public class var name: String {
return "\(Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") ?? "")"
}
/// app标识bundleIdentifier
public class var bundleIdentifier: String {
return Bundle.main.bundleIdentifier ?? ""
}
}
}
1、使用示例(模拟器运行)
let deviceName = UIDevice.Model.Name
print("\(deviceName)") // Simulator
另附一份: 苹果设备表标识链接