iphone-common-codes-ccteam源代码 CCSystem.m

本文介绍了一个Objective-C类,用于获取iOS设备的各种信息,包括系统版本、软件版本、WiFi IP地址等,并提供了内存和CPU信息的获取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// // System.m // PhoneManager // // Created by chenxu on 11-9-9. // Copyright 2011年 __MyComPanyName__. All rights reserved. // #import "CCSystem.h" #import "ifaddrs.h" #import "arpa/inet.h" #import <SystemConfiguration/SCSchemaDefinitions.h> #import <sys/sysctl.h> @implementation UIDevice(Other) - (NSString*)getSystemVersion //get system version e.g. 4.3.3(8J2) { NSString *systemVersion = [[UIDevice currentDevice] systemVersion]; NSUInteger firmwareVersion; NSMutableString *temp = [[NSMutableString alloc] init]; NSMutableString *ultimateSystemVersion = [NSMutableString string]; if ([systemVersion isEqualToString:@"4.3.3"]) {firmwareVersion = iPhone4_3_3; [temp appendString:iPhone4_3_3_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.3.2"]) {firmwareVersion = iPhone4_3_2; [temp appendString:iPhone4_3_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.3.1"]) {firmwareVersion = iPhone4_3_1; [temp :iPhone4_3_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.3"]) {firmwareVersion = iPhone4_3; [temp appendString:iPhone4_3_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.2.1"]) {firmwareVersion = iPhone4_2_1; [temp appendString:iPhone4_2_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.1"]) {firmwareVersion = iPhone4_1; [temp appendString:iPhone4_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.0.2"]) {firmwareVersion = iPhone4_0_2; [temp appendString:iPhone4_0_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.0.1"]) {firmwareVersion = iPhone4_0_1; [temp appendString:iPhone4_0_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"4.0"]) {firmwareVersion = iPhone4_0; [temp appendString:iPhone4_0_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"3.1.3"]) {firmwareVersion = iPhone3_1_3; [temp appendString:iPhone3_1_3_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"3.1.2"]) {firmwareVersion = iPhone3_1_2; [temp appendString:iPhone3_1_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"3.1"]) {firmwareVersion = iPhone3_1; [temp appendString:iPhone3_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"3.0.1"]) {firmwareVersion = iPhone3_0_1; [temp appendString:iPhone3_0_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"3.0"]) {firmwareVersion = iPhone3_0; [temp appendString:iPhone3_0_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"2.2.1"]) {firmwareVersion = iPhone2_2_1; [temp appendString:iPhone2_2_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"2.2"]) {firmwareVersion = iPhone2_2; [temp appendString:iPhone2_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"2.1"]) {firmwareVersion = iPhone2_1; [temp appendString:iPhone2_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"2.0.2"]) {firmwareVersion = iPhone2_0_2; [temp appendString:iPhone2_0_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"2.0.1"]) {firmwareVersion = iPhone2_0_1; [temp appendString:iPhone2_0_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"2.0"]) {firmwareVersion = iPhone2_0; [temp appendString:iPhone2_0_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.1.4"]) {firmwareVersion = iPhone1_1_4; [temp appendString:iPhone1_1_4_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.1.3"]) {firmwareVersion = iPhone1_1_3; [temp appendString:iPhone1_1_3_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.1.2"]) {firmwareVersion = iPhone1_1_2; [temp appendString:iPhone1_1_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.1.1"]) {firmwareVersion = iPhone1_1_1; [temp appendString:iPhone1_1_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.0.2"]) {firmwareVersion = iPhone1_0_2; [temp appendString:iPhone1_0_2_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.0.1"]) {firmwareVersion = iPhone1_0_1; [temp appendString:iPhone1_0_1_FIRMWARE_ID];} if ([systemVersion isEqualToString:@"1.0"]) {firmwareVersion = iPhone1_0; [temp appendString:iPhone1_0_FIRMWARE_ID];} [ultimateSystemVersion appendFormat:@"%@(%@)",systemVersion,temp]; [temp release]; return ultimateSystemVersion; return nil; } @end //取软件版本号 NSString* getSoftwareVersion() { // return [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kSCPropNetIPv4Addresses]; return [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; } NSString * localWiFiIPAddress() { BOOL success; struct ifaddrs * addrs; const struct ifaddrs * cursor; success = getifaddrs(&addrs) == 0; if (success) { cursor = addrs; while (cursor != NULL) { // the second test keePs from Picking uP the looPback address if (cursor->ifa_addr->sa_family == AF_INET /*&& (cursor->ifa_flags & IFF_LOOPBACK) == 0*/) { NSString *name = [NSString stringWithUTF8String:cursor->ifa_name]; if ([name isEqualToString:@"en0"]) // Wi-Fi adaPter return [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]; NSLog(@"name: %@, address: %@", name, [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]); } cursor = cursor->ifa_next; } freeifaddrs(addrs); } return @"无"; } //获取host的名称 NSString * getHostname() { char baseHostName[256]; // Thanks, Gunnar Larisch int success = gethostname(baseHostName, 255); if (success != 0) return nil; baseHostName[255] = '\0'; #if TARGET_IPHONE_SIMULATOR return [NSString stringWithFormat:@"%s", baseHostName]; #else return [NSString stringWithFormat:@"%s.local", baseHostName]; #endif } NSString* getIPAddress() { BOOL success; struct ifaddrs * addrs; const struct ifaddrs * cursor; success = getifaddrs(&addrs) == 0; if (success) { cursor = addrs; while (cursor != NULL) { // the second test keePs from Picking uP the looPback address if (cursor->ifa_addr->sa_family == AF_INET /*&& (cursor->ifa_flags & IFF_LOOPBACK) == 0*/) { NSString *name = [NSString stringWithUTF8String:cursor->ifa_name]; if ([name isEqualToString:@"pdp_ip0"]) // return [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]; NSLog(@"name: %@, address: %@", name, [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]); } cursor = cursor->ifa_next; } freeifaddrs(addrs); } return @"无"; } BOOL memoryInfo(vm_statistics_data_t *vmStats) { mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT; kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)vmStats, &infoCount); return kernReturn == KERN_SUCCESS; } BOOL cpuInfo(vm_statistics_data_t *cpuStats) { mach_msg_type_number_t infoCount = HOST_CPU_LOAD_INFO_COUNT; kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)cpuStats, &infoCount); return kernReturn == KERN_SUCCESS; } void logMemoryInfo() { vm_statistics_data_t vmStats; if (memoryInfo(&vmStats)) { NSLog(@"free: %u\nactive: %u\ninactive: %u\nwire: %u\nzero fill: %u\nreactivations: %u\npageins: %u\npageouts: %u\nfaults: %u\ncow_faults: %u\nlookups: %u\nhits: %u", vmStats.free_count * vm_page_size, vmStats.active_count * vm_page_size, vmStats.inactive_count * vm_page_size, vmStats.wire_count * vm_page_size, vmStats.zero_fill_count * vm_page_size, vmStats.reactivations * vm_page_size, vmStats.pageins * vm_page_size, vmStats.pageouts * vm_page_size, vmStats.faults, vmStats.cow_faults, vmStats.lookups, vmStats.hits ); } } void getInterfaceBytes() { struct ifaddrs *ifa_list = 0, *ifa; if (getifaddrs(&ifa_list) == -1) { return; } uint32_t iBytes = 0; uint32_t oBytes = 0; for (ifa = ifa_list; ifa; ifa = ifa->ifa_next) { if (AF_LINK != ifa->ifa_addr->sa_family) continue; if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING)) continue; if (ifa->ifa_data == 0) continue; /* Not a loopback device. */ if (strncmp(ifa->ifa_name, "lo", 2)) { struct if_data *if_data = (struct if_data *)ifa->ifa_data; iBytes += if_data->ifi_ibytes; oBytes += if_data->ifi_obytes; NSLog(@"ifa->ifa_name is %s, iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes); } } freeifaddrs(ifa_list); } //caller has the duty to release returned array CGFloat* stringArrayTofloatArray(NSArray *stringArray) { // NSMutableArray *floatArray; NSUInteger number = [stringArray count]; CGFloat *floatArray = (CGFloat*)calloc(number, sizeof(CGFloat)); for(int i = 0; i < [stringArray count]; ++i) { CGFloat value = [[stringArray objectAtIndex:i] floatValue]; floatArray[i] = value; } return floatArray; } NSDate* getBootTime() { size_t size = sizeof(struct timeval); // sysctlbyname("boottime", NULL, &size, NULL, 0); struct timeval *time = malloc(sizeof(struct timeval)); // sysctlbyname("boottime", time, &size, NULL, 0); int mib[2] = {CTL_KERN, KERN_BOOTTIME}; sysctl(mib, 2, time, &size, NULL, 0); NSDate *boot = [NSDate dateWithTimeIntervalSince1970:time->tv_sec]; NSLog(@"boot is: %@, tv_sec is: %ld", boot, time->tv_sec); free(time); return boot; } int getWifiFlowIOBytes() { struct ifaddrs *ifa_list = 0, *ifa; if (getifaddrs(&ifa_list) == -1) { return 0; } uint32_t iBytes = 0; uint32_t oBytes = 0; for (ifa = ifa_list; ifa; ifa = ifa->ifa_next) { if (AF_LINK != ifa->ifa_addr->sa_family) continue; if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING)) continue; if (ifa->ifa_data == 0) continue; if (!strcmp(ifa->ifa_name, "en0")) { struct if_data *if_data = (struct if_data *)ifa->ifa_data; iBytes += if_data->ifi_ibytes; oBytes += if_data->ifi_obytes; NSLog(@"%s :iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes); } } freeifaddrs(ifa_list); return iBytes + oBytes; } int getGprs3GFlowIOBytes() { struct ifaddrs *ifa_list = 0, *ifa; if (getifaddrs(&ifa_list) == -1) { return; } uint32_t iBytes = 0; uint32_t oBytes = 0; for (ifa = ifa_list; ifa; ifa = ifa->ifa_next) { if (AF_LINK != ifa->ifa_addr->sa_family) continue; if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING)) continue; if (ifa->ifa_data == 0) continue; if (!strcmp(ifa->ifa_name, "pdp_ip0")) { struct if_data *if_data = (struct if_data *)ifa->ifa_data; iBytes += if_data->ifi_ibytes; oBytes += if_data->ifi_obytes; NSLog(@"%s :iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes); } } freeifaddrs(ifa_list); return iBytes + oBytes; } NSString *bytesToAvaiUnit(int bytes) { if(bytes < 1024) // B { return [NSString stringWithFormat:@"%dB", bytes]; } else if(bytes >= 1024 && bytes < 1024 * 1024) // KB { return [NSString stringWithFormat:@"%.1fKB", (double)bytes / 1024]; } else if(bytes >= 1024 * 1024 && bytes < 1024 * 1024 * 1024) // MB { return [NSString stringWithFormat:@"%.2fMB", (double)bytes / (1024 * 1024)]; } else // GB { return [NSString stringWithFormat:@"%.3fGB", (double)bytes / (1024 * 1024 * 1024)]; } } float getBatteryLevel() { UIDevice *device = [UIDevice currentDevice]; [device setBatteryMonitoringEnabled:YES]; NSLog(@"battery state is: %d, battery level is: %f", [device batteryState], [device batteryLevel]); return [device batteryLevel]; }

可能有更新:

googlecode链接地址:http://code.google.com/p/iphone-common-codes-ccteam/source/browse/trunk/CCFC/files/CCSystem.m

github地址: https://github.com/cxsjabc/iphone-common-codes-ccteam/tree/master/CCFC/files/CCSystem.m


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值