Swift--关于UIDevice的扩展、获取设备型号、系统版本、udid等

   获取苹果设备的标识等其他信息,以及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

另附一份: 苹果设备表标识链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值