Detect iOS device type

前端 未结 5 2026
感动是毒
感动是毒 2020-11-29 04:16

In my application (written in Objective-C), how do I detect if the device is an iPhone, iPad, or iPhone5?

if([[UIDevice currentDevice]userInterfaceIdiom] ==          


        
5条回答
  •  生来不讨喜
    2020-11-29 04:40

    Please check below code:

    UIDevice_enhanced.h

    @interface UIDevice (Enhanced)
    
    typedef enum {
        kUnknownPlatform = 0,
        kiPhone1G,
        kiPhone3G,
        kiPhone3GS,
        kiPhone4,
        kiPhone4Verizon,
        kiPhone4S,
        kiPhone5GSM,
        kiPhone5CDMA,
        kiPhone5CGSM,
        kiPhone5CCDMA,
        kiPhone5SGSM,
        kiPhone5SCDMA,
        kiPhone6,
        kiPhone6P,
        kiPhone6S,
        kiPhone6SP,
        kiPodTouch1G,
        kiPodTouch2G,
        kiPodTouch3G,
        kiPodTouch4G,
        kiPodTouch5G,
        kiPad,
        kiPad2Wifi,
        kiPad2GSM,
        kiPad2CMDA,
        kiPad3Wifi,
        kiPad3GSM,
        kiPad3CMDA,
        kiPad4Wifi,
        kiPad4GSM,
        kiPad4CMDA,
        kiPadAirWifi,
        kiPadAirCellular,
        kiPadMiniWifi,
        kiPadMiniGSM,
        kiPadMiniCDMA,
        kiPadMini2GWifi,
        kiPadMini2GCellular,
        kSimulator
    } PlatformType;
    
    - (NSString *) platformName;
    - (PlatformType) platform;
    
    @end
    

    UIDevice_enhanced.m

    #import "UIDevice_enhanced.h"
    #include 
    
    @interface UIDevice (Enhanced)
    - (NSString *) platformCode;
    @end 
    
    
    @implementation UIDevice (Enhanced)
    
    // Utility method (private)
    - (NSString*) platformCode {
        struct utsname systemInfo;
        uname(&systemInfo);
        NSString* platform =  [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    
        return platform;
    }
    
    // Public method to use
    - (NSString*) platformName {
        NSString* platform = [self platformCode];
    
            if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
    if ([platform isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
    if ([platform isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
    if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
    if ([platform isEqualToString:@"iPhone3,3"])    return @"Verizon iPhone 4";
    if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5 (GSM)";
    if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5c (GSM)";
    if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5c (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5s (GSM)";
    if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5s (GSM+CDMA)";
    if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
    if ([platform isEqualToString:@"iPhone7,2"])    return @"iPhone 6";
    if ([platform isEqualToString:@"iPhone8,2"])    return @"iPhone 6s Plus";
    if ([platform isEqualToString:@"iPhone8,1"])    return @"iPhone 6s";
    
    if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
    if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
    if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
    if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
    if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";
    
    if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2 (WiFi)";
    if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
    if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini (GSM)";
    if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
    if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3 (GSM)";
    if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
    if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4 (GSM)";
    if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";
    if ([platform isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";
    if ([platform isEqualToString:@"iPad4,2"])      return @"iPad Air (Cellular)";
    if ([platform isEqualToString:@"iPad4,4"])      return @"iPad mini 2G (WiFi)";
    if ([platform isEqualToString:@"iPad4,5"])      return @"iPad mini 2G (Cellular)";
    
    if ([platform isEqualToString:@"i386"])         return @"Simulator";
    if ([platform isEqualToString:@"x86_64"])       return @"Simulator";
    
    return platform;
    }
    
    // Public method to use
    - (PlatformType) platform {
        NSString *platform = [self platformCode];
        if ([platform isEqualToString:@"iPhone1,1"])    return kiPhone1G;
        if ([platform isEqualToString:@"iPhone1,2"])    return kiPhone3G;
        if ([platform isEqualToString:@"iPhone2,1"])    return kiPhone3GS;
        if ([platform isEqualToString:@"iPhone3,1"])    return kiPhone4;
        if ([platform isEqualToString:@"iPhone3,2"])    return kiPhone4Verizon;
        if ([platform isEqualToString:@"iPhone4,1"])    return kiPhone4S;
        if ([platform isEqualToString:@"iPhone5,1"])    return kiPhone5GSM;
        if ([platform isEqualToString:@"iPhone5,2"])    return kiPhone5CDMA;
        if ([platform isEqualToString:@"iPhone5,3"])    return kiPhone5CGSM;
        if ([platform isEqualToString:@"iPhone5,4"])    return kiPhone5CCDMA;
        if ([platform isEqualToString:@"iPhone6,1"])    return kiPhone5SGSM;
        if ([platform isEqualToString:@"iPhone6,2"])    return kiPhone5SCDMA;
        if ([platform isEqualToString:@"iPhone7,1"])    return kiPhone6P;
        if ([platform isEqualToString:@"iPhone7,2"])    return kiPhone6;
        if ([platform isEqualToString:@"iPhone8,2"])    return kiPhone6SP;
        if ([platform isEqualToString:@"iPhone8,1"])    return kiPhone6S;
    
        if ([platform isEqualToString:@"iPod1,1"])      return kiPodTouch1G;
        if ([platform isEqualToString:@"iPod2,1"])      return kiPodTouch2G;
        if ([platform isEqualToString:@"iPod3,1"])      return kiPodTouch3G;
        if ([platform isEqualToString:@"iPod4,1"])      return kiPodTouch4G;
        if ([platform isEqualToString:@"iPod5,1"])      return kiPodTouch5G;
    
        if ([platform isEqualToString:@"iPad1,1"])      return kiPad;
        if ([platform isEqualToString:@"iPad2,1"])      return kiPad2Wifi;
        if ([platform isEqualToString:@"iPad2,2"])      return kiPad2GSM;
        if ([platform isEqualToString:@"iPad2,3"])      return kiPad2CMDA;
        if ([platform isEqualToString:@"iPad2,4"])      return kiPad2Wifi;
        if ([platform isEqualToString:@"iPad2,5"])      return kiPadMiniWifi;
        if ([platform isEqualToString:@"iPad2,6"])      return kiPadMiniGSM;
        if ([platform isEqualToString:@"iPad2,7"])      return kiPadMiniCDMA;
        if ([platform isEqualToString:@"iPad3,1"])      return kiPad3Wifi;
        if ([platform isEqualToString:@"iPad3,2"])      return kiPad3CDMA;
        if ([platform isEqualToString:@"iPad3,3"])      return kiPad3GSM;
        if ([platform isEqualToString:@"iPad3,4"])      return kiPad4Wifi;
        if ([platform isEqualToString:@"iPad3,5"])      return kiPad4GSM;
        if ([platform isEqualToString:@"iPad3,6"])      return kiPad4CDMA;
        if ([platform isEqualToString:@"iPad4,1"])      return kiPadAirWifi;
        if ([platform isEqualToString:@"iPad4,2"])      return kiPadAirCellular;
        if ([platform isEqualToString:@"iPad4,4"])      return kiPadMini2GWifi;
        if ([platform isEqualToString:@"iPad4,5"])      return kiPadMini2GCellular;
    
        if ([platform isEqualToString:@"i386"])         return kSimulator;
        if ([platform isEqualToString:@"x86_64"])       return kSimulator;
    
        return kUnknownPlatform;
    }
    
    @end
    

    Hope this works for you...

提交回复
热议问题