美文网首页
如何判断iOS设备硬件型号

如何判断iOS设备硬件型号

作者: Scott丶Wang | 来源:发表于2016-07-05 11:06 被阅读141次

    提供一个可以获得iOS设备硬件型号的类方法

    + (NSString *)currentMachine {
        size_t size; /* sizeof() */
        sysctlbyname("hw.machine", NULL, &size, NULL, 0);
        // Allocate the space to store name
        char *name = (char *)malloc(size);
        // Get the platform name
        sysctlbyname("hw.machine", name, &size, NULL, 0);
        // Place name into a string
        NSString *machine = [NSString stringWithUTF8String:name];
        // Done with this
        free(name);
        return machine;
    }
    
    //这里的malloc方法返回的是一个void *指针类似于OC中的id类型是一个万能指针可以指代一切,所以在尽可能的时候强转成对应的类型。
    void *malloc(size_t);
    

    提供一个可以获得iOS设备准确型号的类方法

    注:但是不建议在项目中直接用,如果需要获取展示iOS设备型号的话,传给服务器上面方法获取的型号,让服务器进行匹配返回,客户端无需做任何if判断。

    + (NSString *)currentPhoneModel {
        NSString *platform = [self currentMachine];
        
        if([platform isEqualToString:@"iPhone1,1"]) return@"iPhone 2G";
        
        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,2"]) return@"iPhone 4";
        
        if([platform isEqualToString:@"iPhone3,3"]) return@"iPhone 4";
        
        if([platform isEqualToString:@"iPhone4,1"]) return@"iPhone 4S";
        
        if([platform isEqualToString:@"iPhone5,1"]) return@"iPhone 5";
        
        if([platform isEqualToString:@"iPhone5,2"]) return@"iPhone 5";
        
        if([platform isEqualToString:@"iPhone5,3"]) return@"iPhone 5c";
        
        if([platform isEqualToString:@"iPhone5,4"]) return@"iPhone 5c";
        
        if([platform isEqualToString:@"iPhone6,1"]) return@"iPhone 5s";
        
        if([platform isEqualToString:@"iPhone6,2"]) return@"iPhone 5s";
        
        if([platform isEqualToString:@"iPhone7,1"]) return@"iPhone 6 Plus";
        
        if([platform isEqualToString:@"iPhone7,2"]) return@"iPhone 6";
        
        if([platform isEqualToString:@"iPhone8,1"]) return@"iPhone 6s";
        
        if([platform isEqualToString:@"iPhone8,2"]) return@"iPhone 6s Plus";
        
        if([platform isEqualToString:@"iPhone8,4"]) return@"iPhone SE";
        
        if([platform isEqualToString:@"iPhone9,1"]) return@"iPhone 7";
        
        if([platform isEqualToString:@"iPhone9,2"]) return@"iPhone 7 Plus";
        
        if([platform isEqualToString:@"iPhone10,1"]) return@"iPhone 8";
        
        if([platform isEqualToString:@"iPhone10,4"]) return@"iPhone 8";
        
        if([platform isEqualToString:@"iPhone10,2"]) return@"iPhone 8 Plus";
        
        if([platform isEqualToString:@"iPhone10,5"]) return@"iPhone 8 Plus";
        
        if([platform isEqualToString:@"iPhone10,3"]) return@"iPhone X";
        
        if([platform isEqualToString:@"iPhone10,6"]) return@"iPhone X";
        
        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 1G";
        
        if([platform isEqualToString:@"iPad2,1"]) return@"iPad 2";
        
        if([platform isEqualToString:@"iPad2,2"]) return@"iPad 2";
        
        if([platform isEqualToString:@"iPad2,3"]) return@"iPad 2";
        
        if([platform isEqualToString:@"iPad2,4"]) return@"iPad 2";
        
        if([platform isEqualToString:@"iPad2,5"]) return@"iPad Mini 1G";
        
        if([platform isEqualToString:@"iPad2,6"]) return@"iPad Mini 1G";
        
        if([platform isEqualToString:@"iPad2,7"]) return@"iPad Mini 1G";
        
        if([platform isEqualToString:@"iPad3,1"]) return@"iPad 3";
        
        if([platform isEqualToString:@"iPad3,2"]) return@"iPad 3";
        
        if([platform isEqualToString:@"iPad3,3"]) return@"iPad 3";
        
        if([platform isEqualToString:@"iPad3,4"]) return@"iPad 4";
        
        if([platform isEqualToString:@"iPad3,5"]) return@"iPad 4";
        
        if([platform isEqualToString:@"iPad3,6"]) return@"iPad 4";
        
        if([platform isEqualToString:@"iPad4,1"]) return@"iPad Air";
        
        if([platform isEqualToString:@"iPad4,2"]) return@"iPad Air";
        
        if([platform isEqualToString:@"iPad4,3"]) return@"iPad Air";
        
        if([platform isEqualToString:@"iPad4,4"]) return@"iPad Mini 2G";
        
        if([platform isEqualToString:@"iPad4,5"]) return@"iPad Mini 2G";
        
        if([platform isEqualToString:@"iPad4,6"]) return@"iPad Mini 2G";
        
        if([platform isEqualToString:@"iPad4,7"]) return@"iPad Mini 3";
        
        if([platform isEqualToString:@"iPad4,8"]) return@"iPad Mini 3";
        
        if([platform isEqualToString:@"iPad4,9"]) return@"iPad Mini 3";
        
        if([platform isEqualToString:@"iPad5,1"]) return@"iPad Mini 4";
        
        if([platform isEqualToString:@"iPad5,2"]) return@"iPad Mini 4";
        
        if([platform isEqualToString:@"iPad5,3"]) return@"iPad Air 2";
        
        if([platform isEqualToString:@"iPad5,4"]) return@"iPad Air 2";
        
        if([platform isEqualToString:@"iPad6,3"]) return@"iPad Pro 9.7";
        
        if([platform isEqualToString:@"iPad6,4"]) return@"iPad Pro 9.7";
        
        if([platform isEqualToString:@"iPad6,7"]) return@"iPad Pro 12.9";
        
        if([platform isEqualToString:@"iPad6,8"]) return@"iPad Pro 12.9";
        
        if([platform isEqualToString:@"i386"]) return@"iPhone";
        
        if([platform isEqualToString:@"x86_64"]) return@"iPhone";
        
        return platform;
    }
    

    参考:
    How to determine the current iPhone/device model?

    相关文章

      网友评论

          本文标题:如何判断iOS设备硬件型号

          本文链接:https://www.haomeiwen.com/subject/ksyhjttx.html