更新了一下,支持iPhone4和iPad,iPod touch4 #import <Foundation/Foundation.h> #import <sys/utsname.h> enum { MODEL_UNKNowN, MODEL_IPHONE_SIMulATOR, MODEL_IPOD_touch, MODEL_IPOD_touch_2G, MODEL_IPOD_touch_3G, MODEL_IPOD_touch_4G, MODEL_IPHONE, MODEL_IPHONE_3G, MODEL_IPHONE_3GS, MODEL_IPHONE_4G, MODEL_IPAD }; @interface DeviceDetection : NSObject + (uint) detectDevice; + (int) detectModel; + (Nsstring *) returnDevicename:(BOol)ignoreSimulator; + (BOol) isIPodtouch; + (BOol) isOS4; + (BOol) canSendSms; @end #import "DeviceDetection.h" #import <MessageUI/MessageUI.h> #include <sys/types.h> #include <sys/sysctl.h> @implementation DeviceDetection + (BOol) isIPodtouch { int model = [DeviceDetection detectDevice]; if (model == MODEL_IPOD_touch || model == MODEL_IPAD){ //|| model == MODEL_IPHONE_SIMulATOR){ return YES; } else { return NO; } } + (BOol) isOS4 { // TBD return YES; } + (BOol)canSendSms { return [MFMessageComposeVIEwController canSendText]; } + (Nsstring *)platform{ size_t size; sysctlbyname("hw.machine",NulL,&size,0); char *machine = malloc(size); sysctlbyname("hw.machine",machine,0); Nsstring *platform = [Nsstring stringWithUTF8String:machine]; free(machine); return platform; } + (int) detectModel{ Nsstring *platform = [DeviceDetection platform]; if ([platform isEqualToString:@"iPhone1,1"]) return MODEL_IPHONE; if ([platform isEqualToString:@"iPhone1,2"]) return MODEL_IPHONE_3G; if ([platform isEqualToString:@"iPhone2,1"]) return MODEL_IPHONE_3GS; if ([platform isEqualToString:@"iPhone3,1"]) return MODEL_IPHONE_4G; if ([platform isEqualToString:@"iPod1,1"]) return MODEL_IPOD_touch; if ([platform isEqualToString:@"iPod2,1"]) return MODEL_IPOD_touch_2G; if ([platform isEqualToString:@"iPod3,1"]) return MODEL_IPOD_touch_3G; if ([platform isEqualToString:@"iPod4,1"]) return MODEL_IPOD_touch_4G; if ([platform isEqualToString:@"iPad1,1"]) return MODEL_IPAD; if ([platform isEqualToString:@"i386"]) return MODEL_IPHONE_SIMulATOR; return MODEL_UNKNowN; } + (uint) detectDevice { Nsstring *model= [[UIDevice currentDevice] model]; // Some iPod touch return "iPod touch",others just "iPod" Nsstring *iPodtouch = @"iPod touch"; Nsstring *iPodtouchLowerCase = @"iPod touch"; Nsstring *iPodtouchShort = @"iPod"; Nsstring *iPad = @"iPad"; Nsstring *iPhonesimulator = @"iPhone Simulator"; uint detected; if ([model compare:iPhonesimulator] == NSOrderedSame) { // iPhone simulator detected = MODEL_IPHONE_SIMulATOR; } else if ([model compare:iPad] == NSOrderedSame) { // iPad detected = MODEL_IPAD; } else if ([model compare:iPodtouch] == NSOrderedSame) { // iPod touch detected = MODEL_IPOD_touch; } else if ([model compare:iPodtouchLowerCase] == NSOrderedSame) { // iPod touch detected = MODEL_IPOD_touch; } else if ([model compare:iPodtouchShort] == NSOrderedSame) { // iPod touch detected = MODEL_IPOD_touch; } else { // Could be an iPhone V1 or iPhone 3G (model should be "iPhone") struct utsname u; // u.machine Could be "i386" for the simulator,"iPod1,1" on iPod touch,"iPhone1,1" on iPhone V1 & "iPhone1,2" on iPhone3G uname(&u); if (!strcmp(u.machine,1")) { detected = MODEL_IPHONE; } else if (!strcmp(u.machine,2")){ detected = MODEL_IPHONE_3G; } else if (!strcmp(u.machine,"iPhone2,1")){ detected = MODEL_IPHONE_3GS; } else if (!strcmp(u.machine,"iPhone3,1")){ detected = MODEL_IPHONE_4G; } } return detected; } + (Nsstring *) returnDevicename:(BOol)ignoreSimulator { Nsstring *returnValue = @"UnkNown"; switch ([DeviceDetection detectDevice]) { case MODEL_IPHONE_SIMulATOR: if (ignoreSimulator) { returnValue = @"iPhone 3G"; } else { returnValue = @"iPhone Simulator"; } break; case MODEL_IPOD_touch: returnValue = @"iPod touch"; break; case MODEL_IPHONE: returnValue = @"iPhone"; break; case MODEL_IPHONE_3G: returnValue = @"iPhone 3G"; break; default: break; } return returnValue; } @end
总结以上是内存溢出为你收集整理的检测iPhone/iPod Touch/iPad设备类型 .全部内容,希望文章能够帮你解决检测iPhone/iPod Touch/iPad设备类型 .所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)