2017-06-15 2 views
2

Ich möchte das Testgerät iPod oder iPhone erkennen. Jetzt benutze ich diesen Code.
Wie kann ich mit Swift 3 ein iPod- und iPhone-Gerät erkennen?

if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) 
    { debugPrint("ipad show") 

    } 
    else 
    { 
     debugPrint("ipod show") 
    } 

Wenn ich mit dem iPhone testen 7, zeigt es den iPod. Also würde ich gerne feststellen ob es iPod oder iPhone ist.
Ich möchte keinen zusätzlichen Pod installieren, um dies zu erreichen.
Ich möchte dies mit einfachem und kurzem Code implementieren.
Kann mir bitte jemand helfen?

+0

Es ist ein relatives Thema bereits in stacjoverflow [Dieser Link] (https://stackoverflow.com/questions/24059327/detect-current-device-with- UI-Benutzerschnittstelle-idiom-in-swift) –

+0

Ja. Ich habe diesen Posten gesehen. Aber es beinhaltet keine Differenzierung iPod und iPhone. –

+0

Mögliches Duplikat von [iOS: Wie ermittelt man das aktuelle iPhone/Gerätemodell in Swift?] (Https://stackoverflow.com/questions/26028918/ios-how-to-determine-the-current-iphone-device-model -in-swift) –

Antwort

4

Sie können es besser, indem eine Erweiterung für UIDevice machen wie:

public 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 "iPhone9,1", "iPhone9,3":     return "iPhone 7" 
    case "iPhone9,2", "iPhone9,4":     return "iPhone 7 Plus" 
    case "i386", "x86_64":       return "Simulator" 
    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 
    } 
    } 
} 

Verbrauch: UIDevice.current.modelName Dies wird das Gerätemodell in String zurück.

Try es gerne verwenden:

if UIDevice.current.modelName == "Simulator" { 
    print("Simulator") 
} 
else { 
    print("Real Device") 
} 
+0

Wie überprüfe ich es? Könnten Sie mir bitte im Detail erzählen, Bruder? –

+0

Ich habe auch die Verwendung von ihm nur UIDevice.modelName anrufen geschrieben und es gibt Ihnen den aktuellen Gerätemodellnamen Wetter es ist iPhone, iPad, iPod Apple TV oder Simulator einfach. –

+0

Dank Bruder. Ich verstehe das nicht klar. Für meinen Fall möchte ich iPod oder iPhone überprüfen. Also, wenn UIDevice.current.modelName == "iPod Touch 5" { print ("iPod Touch 5") } else { print ("Echt Device") } Soll ich wie dies zu überprüfen? Also muss ich den iPod Touch 6 noch einmal schreiben? –

Verwandte Themen