khstar

iOS Device Model 이름 가져오기 본문

개발/iOS&iPhone&iPad

iOS Device Model 이름 가져오기

khstar 2018. 7. 24. 17:17
반응형

iOS에서 Device의 Model이름을 찾아오는 방법입니다. 

google에서 검색하면 다양하게 나옵니다. 


더욱 간단하게는 UIDevice에 Extension 해서 사용하는 방법도 있죠.

전 그냥 Util로 static func로 만들어 봤습니다.


기본적으로는 deviceModelName()만 호출하면 modelName이 반환됩니다.


모델 정보는 https://www.theiphonewiki.com/wiki/Models을 참조 하였습니다.


    ///Identifier 찾기

    static func getDeviceIdentifier() -> 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)))

        }

        

        return identifier

    }

    

    /**

     디바이스 모델 (iPhone, iPad) 이름 전달 (iPhone6, iPhone7 Plus...)

     */

    static func deviceModelName() -> String {

        

        let model = UIDevice.current.model

        

        switch model {

        case "iPhone":

            return self.iPhoneModel()

        case "iPad":

            return self.iPadModel()

        case "iPad mini" :

            return self.iPadMiniModel()

        default:

            return "Unknown Model : \(model)"

        }

        

    }

    

    /**

     iPhone 모델 이름 (iPhone6, iPhone7 Plus...)

     */

    static func iPhoneModel() -> String {

        

        let identifier = self.getDeviceIdentifier()

        

        switch identifier {

        case "iPhone1,1" :

            return "iPhone"

        case "iPhone1,2" :

            return "iPhone3G"

        case "iPhone2,1" :

            return "iPhone3GS"

        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 "iPhone6 Plus"

        case "iPhone8,1" :

            return "iPhone6s"

        case "iPhone8,2" :

            return "iPhone6s Plus"

        case "iPhone8,4" :

            return "iPhone SE"

        case "iPhone9,1", "iPhone9,3" :

            return "iPhone7"

        case "iPhone9,2", "iPhone9,4" :

            return "iPhone7 Plus"

        case "iPhone10,1", "iPhone10,4" :

            return "iPhone8"

        case "iPhone10,2", "iPhone10,5" :

            return "iPhone8 Plus"

        case "iPhone10,3", "iPhone10,6" :

            return "iPhoneX"

        default:

            return "Unknown iPhone : \(identifier)"

        }

    }

    

    /**

     iPad 모델 이름

    */

    static func iPadModel() -> String {

        

        let identifier = self.getDeviceIdentifier()

        

        switch identifier {

        case "iPad1,1":

            return "iPad"

        case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4" :

            return "iPad2"

        case "iPad3,1", "iPad3,2", "iPad3,3" :

            return "iPad 3rd Generation"

        case "iPad3,4", "iPad3,5", "iPad3,6" :

            return "iPad 4rd Generation"

        case "iPad4,1", "iPad4,2", "iPad4,3" :

            return "iPad Air"

        case "iPad5,3", "iPad5,4" :

            return "iPad Air2"

        case "iPad6,7", "iPad6,8" :

            return "iPad Pro 12.9"

        case "iPad6,3", "iPad6,4" :

            return "iPad Pro 9.7"

        case "iPad6,11", "iPad6,12" :

            return "iPad 5th Generation"

        case "iPad7,1", "iPad7,2" :

            return "iPad Pro 12.9 2nd Generation"

        case "iPad7,3", "iPad7,4" :

            return "iPad Pro 10.5"

        case "iPad7,5", "iPad7,6" :

            return "iPad 6th Generation"

        default:

            return "Unknown iPad : \(identifier)"

        }

    }

    

    /**

     iPad mini 모델 이름

     */

    static func iPadMiniModel() -> String {

        

        let identifier = self.getDeviceIdentifier()

        

        switch identifier {

        case "iPad2,5", "iPad2,6", "iPad2,7" :

            return "iPad mini"

        case "iPad4,4", "iPad4,5", "iPad4,6" :

            return "iPad mini2"

        case "iPad4,7", "iPad4,8", "iPad4,9" :

            return "iPad mini3"

        case "iPad5,1", "iPad5,2" :

            return "iPad mini4"

        default:

            return "Unknown iPad mini : \(identifier)"

        }

    }


반응형
Comments