微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取iOS程序之运行环境是iphone或ipad

执行环境

可以从 UIDevice 的属性 model 得到在现在执行的环境。例子如下:

 

更新了一下,支持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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐