代码之家  ›  专栏  ›  技术社区  ›  Duck

iPhone-如何检测iPhone版本?

  •  11
  • Duck  · 技术社区  · 15 年前

    我需要检测硬件,而不是iOS版本。

    3 回复  |  直到 15 年前
        1
  •  11
  •   Community Mohan Dere    8 年前

    here

    用法

    UIDeviceHardware *h=[[UIDeviceHardware alloc] init];
    [self setDeviceModel:[h platformString]];   
    [h release];
    

    //
    //  UIDeviceHardware.h
    //
    //  Used to determine EXACT version of device software is running on.
    
    #import <Foundation/Foundation.h>
    
    @interface UIDeviceHardware : NSObject 
    
    - (NSString *) platform;
    - (NSString *) platformString;
    
    @end
    

    //
    //  UIDeviceHardware.m
    //
    //  Used to determine EXACT version of device software is running on.
    
    #import "UIDeviceHardware.h"
    #include <sys/types.h>
    #include <sys/sysctl.h>
    
    @implementation UIDeviceHardware
    
    - (NSString *) platform{
        size_t size;
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);
        char *machine = malloc(size);
        sysctlbyname("hw.machine", machine, &size, NULL, 0);
        NSString *platform = [NSString stringWithCString:machine];
        free(machine);
        return platform;
    }
    
    - (NSString *) platformString{
        NSString *platform = [self platform];
        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:@"iPod1,1"])   return @"iPod Touch 1G";
        if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G";
        if ([platform isEqualToString:@"i386"])   return @"iPhone Simulator";
        return platform;
    }
    
    @end
    
        2
  •  6
  •   Vishnu Kumar. S    13 年前
    #import <sys/utsname.h>
    
    + (NSString*)deviceModelName {
    
            struct utsname systemInfo;
    
            uname(&systemInfo);
    
            NSString *modelName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    
            if([modelName isEqualToString:@"i386"]) {
                modelName = @"iPhone Simulator";
            }
            else if([modelName isEqualToString:@"iPhone1,1"]) {
                modelName = @"iPhone";
            }
            else if([modelName isEqualToString:@"iPhone1,2"]) {
                modelName = @"iPhone 3G";
            }
            else if([modelName isEqualToString:@"iPhone2,1"]) {
                modelName = @"iPhone 3GS";
            }
            else if([modelName isEqualToString:@"iPhone3,1"]) {
                modelName = @"iPhone 4";
            }
            else if([modelName isEqualToString:@"iPhone4,1"]) {
                modelName = @"iPhone 4S";
            }
            else if([modelName isEqualToString:@"iPod1,1"]) {
                modelName = @"iPod 1st Gen";
            }
            else if([modelName isEqualToString:@"iPod2,1"]) {
                modelName = @"iPod 2nd Gen";
            }
            else if([modelName isEqualToString:@"iPod3,1"]) {
                modelName = @"iPod 3rd Gen";
            }
            else if([modelName isEqualToString:@"iPad1,1"]) {
                modelName = @"iPad";
            }
            else if([modelName isEqualToString:@"iPad2,1"]) {
                modelName = @"iPad 2(WiFi)";
            }
            else if([modelName isEqualToString:@"iPad2,2"]) {
                modelName = @"iPad 2(GSM)";
            }
            else if([modelName isEqualToString:@"iPad2,3"]) {
                modelName = @"iPad 2(CDMA)";
            }
    
            return modelName;
        }
    
        3
  •  1
  •   IOS Rocks    13 年前

    您可以使用此代码检测iPhone OS版本。 float version=[[[UIDevice currentDevice]systemVersion]floatValue];

    if (version >= 3.0) {
        // Only executes on version 3 or above.
    } 
    
    推荐文章