Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detect iOS device type

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

if([[UIDevice currentDevice]userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    // [iphone] or [itouch]
} else {
    // [ipad]
}
like image 951
Emilie Avatar asked Oct 30 '12 12:10

Emilie


People also ask

How do I find my iOS device model?

Go to Settings > General > About. To the right of Model, you'll see the part number. To see the model number, tap the part number.

How do I know if my iPhone is swift or iPad?

To detect current device with iOS/Swift we can use UserInterfaceIdiom. It is an enum in swift, which tells which device is being used. The interface idiom provides multiple values in it's enum which are.

How do I find the device name in Swift?

Basic Swift Code for iOS Apps Device name is generally a name which will find in the device Setting→ General→ About.


2 Answers

you can easly detect iphone, iphone5 and iPad with below condition (But not iTouch! iTouch is treated as if it were an iPhone with this code!):-

 if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone)
 {
     if ([[UIScreen mainScreen] bounds].size.height == 568)
     {


     }
     else
     {
         //iphone 3.5 inch screen
     }
 }
 else
 {
        //[ipad]
 }

UPDATE

You can also use MACRO or define Variable for check is that iPhone5,iPhone4 or iPad like Bellow:-

#define isiPhone5  ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE
#define isiPhone  (UI_USER_INTERFACE_IDIOM() == 0)?TRUE:FALSE

Example:-

if(isiPhone)
     {
         if (isiPhone5)
         {


         }
         else
         {
             //iphone 3.5 inch screen
         }
     }
     else
     {
            //[ipad]
     }
like image 183
Nitin Gohel Avatar answered Oct 25 '22 18:10

Nitin Gohel


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 <sys/utsname.h>

@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...

like image 26
iCreative Avatar answered Oct 25 '22 16:10

iCreative