读书人

iOS中怎么实现检测苹果设备的类型

发布时间: 2013-02-25 10:23:36 作者: rapoo

iOS中如何实现检测苹果设备的类型
苹果的每个产品都有几个类型,从iphone到ipod、ipad,而每个产品又有几个类型,从iphone2G到iphone5,从iPod touch1到iPod touch5,从ipad1到ipad4,只有你想不到的,没有人家做不到的。

但是在做ios开发中如何检测这些类型呢?下边的方法就是CSDN问答中给出的方法,原问题见:http://ask.csdn.net/questions/997

- (NSString *) platformString{
// Gets a string with the device model
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 encoding:NSUTF8StringEncoding];
free(machine);
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 (CDMA)";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";

if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch (1 Gen)";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch (2 Gen)";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch (3 Gen)";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch (4 Gen)";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";

if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad1,2"]) return @"iPad 3G";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";


if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini";
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";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";

if ([platform isEqualToString:@"i386"]) return @"Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"Simulator";
return platform;
}



[解决办法]
不错 ,呵呵!!!!
[解决办法]
UIDevice
[解决办法]
学习了。这个挺有用的。
[解决办法]
支持原创,不错
[解决办法]
苹果的每个产品都有几个类型,从iphone到ipod、ipad,
[解决办法]
bu gong a
[解决办法]
么,,,看的好晕啊
[解决办法]
这个没有什么用呀 主要区分的目的在于屏幕的分辨率
point一样就没有区分的必要了
[解决办法]
看一看长长见识
[解决办法]
非常给力,谢谢楼主分享
[解决办法]
iOS中怎么实现检测苹果设备的类型
[解决办法]
楼主威武~啊哈哈哈
[解决办法]
支持你一个iOS中怎么实现检测苹果设备的类型
[解决办法]
谢谢了,我好能用上!
[解决办法]
支持 学习了
[解决办法]
这么多if看着不舒服,改进一下。

- (NSString *) platformString{


// Gets a string with the device model
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 encoding:NSUTF8StringEncoding];
free(machine);
static NSDictionary* d = nil;
if (d == nil)
{
d = @{
@"iPhone1,1": @"iPhone 2G",
@"iPhone1,2": @"iPhone 3G",
@"iPhone2,1": @"iPhone 3GS",
@"iPhone3,1": @"iPhone 4",
@"iPhone3,2": @"iPhone 4",
@"iPhone3,3": @"iPhone 4 (CDMA)",
@"iPhone4,1": @"iPhone 4S",
@"iPhone5,1": @"iPhone 5",
@"iPhone5,2": @"iPhone 5 (GSM+CDMA)",

@"iPod1,1": @"iPod Touch (1 Gen)",
@"iPod2,1": @"iPod Touch (2 Gen)",
@"iPod3,1": @"iPod Touch (3 Gen)",
@"iPod4,1": @"iPod Touch (4 Gen)",
@"iPod5,1": @"iPod Touch (5 Gen)",

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

@"i386": @"Simulator",
@"x86_64": @"Simulator"
};
}
NSString* ret = [d objectForKey: platForm];
if (ret == nil)
{
return platForm;
}
return ret;
}


[解决办法]
果断switch!
[解决办法]
威武,谢谢啦

读书人网 >Iphone

热点推荐