Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

objective c - How to programmatically differentiate between iphone 4 and iphone 4S?

I am working on app which needs to check the iphone model, but I'm not able to find any solution. I will be thank full for any suggestion.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is much simpler one. SIMPLE ENOUGH FOR JUST COPY & PASTE

Also, I've included matching model name for machine name.

//MARK: Required import
#import <sys/utsname.h>

+ (NSString*)deviceModelName {

    struct utsname systemInfo;
    uname(&systemInfo);

    NSString *machineName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];

    //MARK: More official list is at
    //http://theiphonewiki.com/wiki/Models
    //MARK: You may just return machineName. Following is for convenience

    NSDictionary *commonNamesDictionary =
    @{
      @"i386":     @"iPhone Simulator",
   @"x86_64":   @"iPad Simulator",

   @"iPhone1,1":    @"iPhone",
   @"iPhone1,2":    @"iPhone 3G",
   @"iPhone2,1":    @"iPhone 3GS",
   @"iPhone3,1":    @"iPhone 4",
   @"iPhone3,2":    @"iPhone 4(Rev A)",
   @"iPhone3,3":    @"iPhone 4(CDMA)",
   @"iPhone4,1":    @"iPhone 4S",
   @"iPhone5,1":    @"iPhone 5(GSM)",
   @"iPhone5,2":    @"iPhone 5(GSM+CDMA)",
   @"iPhone5,3":    @"iPhone 5c(GSM)",
   @"iPhone5,4":    @"iPhone 5c(GSM+CDMA)",
   @"iPhone6,1":    @"iPhone 5s(GSM)",
   @"iPhone6,2":    @"iPhone 5s(GSM+CDMA)",

   @"iPhone7,1":    @"iPhone 6+ (GSM+CDMA)",
   @"iPhone7,2":    @"iPhone 6 (GSM+CDMA)",

   @"iPhone8,1":    @"iPhone 6S (GSM+CDMA)",
   @"iPhone8,2":    @"iPhone 6S+ (GSM+CDMA)",

   @"iPad1,1":  @"iPad",
   @"iPad2,1":  @"iPad 2(WiFi)",
   @"iPad2,2":  @"iPad 2(GSM)",
   @"iPad2,3":  @"iPad 2(CDMA)",
   @"iPad2,4":  @"iPad 2(WiFi Rev A)",
   @"iPad2,5":  @"iPad Mini 1G (WiFi)",
   @"iPad2,6":  @"iPad Mini 1G (GSM)",
   @"iPad2,7":  @"iPad Mini 1G (GSM+CDMA)",
   @"iPad3,1":  @"iPad 3(WiFi)",
   @"iPad3,2":  @"iPad 3(GSM+CDMA)",
   @"iPad3,3":  @"iPad 3(GSM)",
   @"iPad3,4":  @"iPad 4(WiFi)",
   @"iPad3,5":  @"iPad 4(GSM)",
   @"iPad3,6":  @"iPad 4(GSM+CDMA)",

   @"iPad4,1":  @"iPad Air(WiFi)",
   @"iPad4,2":  @"iPad Air(GSM)",
   @"iPad4,3":  @"iPad Air(GSM+CDMA)",

   @"iPad5,3":  @"iPad Air 2 (WiFi)",
   @"iPad5,4":  @"iPad Air 2 (GSM+CDMA)",

   @"iPad4,4":  @"iPad Mini 2G (WiFi)",
   @"iPad4,5":  @"iPad Mini 2G (GSM)",
   @"iPad4,6":  @"iPad Mini 2G (GSM+CDMA)",

   @"iPad4,7":  @"iPad Mini 3G (WiFi)",
   @"iPad4,8":  @"iPad Mini 3G (GSM)",
   @"iPad4,9":  @"iPad Mini 3G (GSM+CDMA)",

   @"iPod1,1":  @"iPod 1st Gen",
   @"iPod2,1":  @"iPod 2nd Gen",
   @"iPod3,1":  @"iPod 3rd Gen",
   @"iPod4,1":  @"iPod 4th Gen",
   @"iPod5,1":  @"iPod 5th Gen",
   @"iPod7,1":  @"iPod 6th Gen",
    };

    NSString *deviceName = commonNamesDictionary[machineName];

    if (deviceName == nil) {
        deviceName = machineName;
    }

    return deviceName;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...