有的时候我们要获取设备的一些信息,希望该blog对你有帮助;
记得导入头文件,有的可能用不上,我就不一一核对了。
#import "sys/utsname.h"
#include <sys/socket.h>
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>
#include <mach/task_info.h>
#include <mach/task.h>
#include <mach/thread_act.h>
#include <mach/vm_map.h>
#include <mach/mach_traps.h>
#include <mach/mach_init.h>
#include <mach/mach_host.h>
#import <CoreFoundation/CoreFoundation.h>
#import <CoreLocation/CoreLocation.h>
/**
* 获取当前设备型号标识(字符串)
*/
- (NSString *)getCurrentDeviceString
{
struct utsname systemInfo;
uname(&systemInfo);
NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
return deviceString;
}
/**
* 获取当前设备型号(枚举)
*/
- (DeviceType)getCurrentDeviceType
{
NSString *deviceString = [self getCurrentDeviceString];
if ([deviceString isEqualToString:@"iPhone1,1"]) {
return iPhone;
}else if ([deviceString isEqualToString:@"iPhone1,2"]){
return iPhone3G;
}else if ([deviceString isEqualToString:@"iPhone2,1"]){
return iPhone3GS;
}else if ([deviceString isEqualToString:@"iPhone3,1"]||
[deviceString isEqualToString:@"iPhone3,2"]||
[deviceString isEqualToString:@"iPhone3,3"]){
return iPhone4;
}else if ([deviceString isEqualToString:@"iPhone4,1"]){
return iPhone4S;
}else if ([deviceString isEqualToString:@"iPhone5,1"]||
[deviceString isEqualToString:@"iPhone5,2"]){
return iPhone5;
}else if ([deviceString isEqualToString:@"iPhone5,3"]||
[deviceString isEqualToString:@"iPhone5,4"]){
return iPhone5C;
}else if ([deviceString isEqualToString:@"iPhone6,1"]||
[deviceString isEqualToString:@"iPhone6,2"]){
return iPhone5S;
}else if ([deviceString isEqualToString:@"iPhone7,2"]){
return iPhone6;
}else if ([deviceString isEqualToString:@"iPhone7,1"]){
return iPhone6plus;
}else if ([deviceString isEqualToString:@"iPad1,1"]){
return iPad;
}else if ([deviceString isEqualToString:@"iPad2,1"]||
[deviceString isEqualToString:@"iPad2,2"]||
[deviceString isEqualToString:@"iPad2,3"]||
[deviceString isEqualToString:@"iPad2,4"]){
return iPad2;
}else if ([deviceString isEqualToString:@"iPad3,1"]||
[deviceString isEqualToString:@"iPad3,2"]||
[deviceString isEqualToString:@"iPad3,3"]){
return iPad3;
}else if ([deviceString isEqualToString:@"iPad3,4"]||
[deviceString isEqualToString:@"iPad3,5"]||
[deviceString isEqualToString:@"iPad3,6"]){
return iPad4;
}else if ([deviceString isEqualToString:@"iPad4,1"]||
[deviceString isEqualToString:@"iPad4,2"]||
[deviceString isEqualToString:@"iPad4,3"]){
return iPadAir;
}else if ([deviceString isEqualToString:@"iPad5,3"]||
[deviceString isEqualToString:@"iPad5,4"]){
return iPadAir2;
}else if ([deviceString isEqualToString:@"iPad2,5"]||
[deviceString isEqualToString:@"iPad2,6"]||
[deviceString isEqualToString:@"iPad2,7"]){
return iPadMini;
}else if ([deviceString isEqualToString:@"iPad4,4"]||
[deviceString isEqualToString:@"iPad4,5"]||
[deviceString isEqualToString:@"iPad4,6"]){
return iPadMini2;
}else if ([deviceString isEqualToString:@"iPad4,7"]||
[deviceString isEqualToString:@"iPad4,8"]||
[deviceString isEqualToString:@"iPad4,9"]){
return iPadMini3;
}else if ([deviceString isEqualToString:@"iPod1,1"]){
return iPodTouch;
}else if ([deviceString isEqualToString:@"iPod2,1"]){
return iPodTouch2G;
}else if ([deviceString isEqualToString:@"iPod3,1"]){
return iPodTouch3G;
}else if ([deviceString isEqualToString:@"iPod4,1"]){
return iPodTouch4G;
}else if ([deviceString isEqualToString:@"iPod5,1"]){
return iPodTouch5G;
}else if ([deviceString isEqualToString:@"iPod7,1"]){
return iPodTouch6G;
}else if ([deviceString isEqualToString:@"iPhone8,2"]){
return iPhone6SPlus;
}else if ([deviceString isEqualToString:@"iPhone8,1"]){
return iPhone6S;
}else{
return otherType;
}
}
/**
* 获取当前iOS系统版本
*/
- (NSString *)getCurrentSystemVersion
{
NSString *systemVision = [[UIDevice currentDevice] systemVersion];
HHLog(@"系统版本%@",systemVision);
return systemVision;
}
/**
* 获取当前设备的磁盘总容量(单位G)
*/
- (double)getCurrentDeviceDiskTotalSize
{
NSDictionary *diskDict = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
double totalSize = ((NSNumber*)[diskDict objectForKey:NSFileSystemSize]).doubleValue / (1024.0 * 1024.0 * 1024.0)
HHLog(@"diskSize%f",totalSize);
return totalSize;
}
/**
* 获取当前设备的磁盘剩余容量(单位G)
*/
- (double)getCurrentDeviceDiskFreeSize
{
NSDictionary *diskDict = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil];
return ((NSNumber*)[diskDict objectForKey:NSFileSystemFreeSize]).doubleValue / (1024.0 * 1024.0 * 1024.0);
}
/**
* 获取当前设备的磁盘使用容量(单位G)
*/
- (double)getCurrentDeviceDiskUsingSize
{
HHLog(@"totalMemory%0.0f",([self getCurrentDeviceDiskTotalSize] - [self getCurrentDeviceDiskFreeSize]));
return ([self getCurrentDeviceDiskTotalSize] - [self getCurrentDeviceDiskFreeSize]);
}
/**
* 获取内存总容量(单位M)
*/
- (NSUInteger)getTotalMemory
{
HHLog(@"totalMemory%0.0f",[self getSysInfo:HW_PHYSMEM] / 1024.0 / 1024.0);
return [self getSysInfo:HW_PHYSMEM] / 1024.0 / 1024.0;
}
/**
* 获取当前使用内存容量(单位M)
*/
- (NSUInteger)getUsingMemory
{
HHLog(@"userMemory%0.0f",[self getSysInfo:HW_USERMEM]/ 1024.0 / 1024.0);
return [self getSysInfo:HW_USERMEM] / 1024.0 / 1024.0;
}
- (NSUInteger)getSysInfo: (uint) typeSpecifier
{
size_t size = sizeof(int);
int results;
int mib[2] = {CTL_HW, typeSpecifier};
sysctl(mib, 2, &results, &size, NULL, 0);
return (NSUInteger) results;
}