Skip to content

Instantly share code, notes, and snippets.

@yong076
Last active November 9, 2018 05:56
Show Gist options
  • Save yong076/9eeba4f964d301d58ee93cb3dfaec421 to your computer and use it in GitHub Desktop.
Save yong076/9eeba4f964d301d58ee93cb3dfaec421 to your computer and use it in GitHub Desktop.

Revisions

  1. yong076 revised this gist Nov 9, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions Device.swift
    Original file line number Diff line number Diff line change
    @@ -5,6 +5,8 @@
    // Copyright © 2018년 DanielKim. All rights reserved.
    //

    // check Device Name and Model and Simulator , Update continuance

    import Foundation


  2. yong076 revised this gist Nov 9, 2018. No changes.
  3. yong076 revised this gist Nov 9, 2018. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion Device.swift
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,5 @@
    //
    // Devices.swift
    // Bitberry
    //
    // Created by Daniel Kim on 2018. 7. 10..
    // Copyright © 2018년 DanielKim. All rights reserved.
  4. yong076 revised this gist Nov 9, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Device.swift
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@
    // Bitberry
    //
    // Created by Daniel Kim on 2018. 7. 10..
    // Copyright © 2018년 rootone. All rights reserved.
    // Copyright © 2018년 DanielKim. All rights reserved.
    //

    import Foundation
  5. yong076 created this gist Nov 9, 2018.
    80 changes: 80 additions & 0 deletions Device.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,80 @@
    //
    // Devices.swift
    // Bitberry
    //
    // Created by Daniel Kim on 2018. 7. 10..
    // Copyright © 2018년 rootone. All rights reserved.
    //

    import Foundation


    public extension UIDevice {

    static let 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)))
    }

    func mapToDevice(identifier: String) -> String {
    #if os(iOS)
    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", "iPhone9,3": return "iPhone 7"
    case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus"
    case "iPhone8,4": return "iPhone SE"
    case "iPhone10,1", "iPhone10,4": return "iPhone 8"
    case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus"
    case "iPhone10,3", "iPhone10,6": return "iPhone X"
    case "iPhone11,8": return "iPhone XR"
    case "iPhone11,2": return "iPhone XS"
    case "iPhone11,4": return "iPhone XS MAX"
    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 "iPad6,11", "iPad6,12": return "iPad 5"
    case "iPad7,5", "iPad7,6": return "iPad 6"
    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,3", "iPad6,4": return "iPad Pro 9.7 Inch"
    case "iPad6,7", "iPad6,8": return "iPad Pro 12.9 Inch"
    case "iPad7,1", "iPad7,2": return "iPad Pro 12.9 Inch 2. Generation"
    case "iPad7,3", "iPad7,4": return "iPad Pro 10.5 Inch"
    case "AppleTV5,3": return "Apple TV"
    case "AppleTV6,2": return "Apple TV 4K"
    case "AudioAccessory1,1": return "HomePod"
    case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "iOS"))"
    default: return identifier
    }
    #elseif os(tvOS)
    switch identifier {
    case "AppleTV5,3": return "Apple TV 4"
    case "AppleTV6,2": return "Apple TV 4K"
    case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "tvOS"))"
    default: return identifier
    }
    #endif
    }

    return mapToDevice(identifier: identifier)
    }()

    }