一持搜、目錄結(jié)構(gòu):
獲取屏幕寬度與高度
獲取設(shè)備版本號
獲取iPhone名稱
獲取app版本號
獲取電池電量
獲取當(dāng)前系統(tǒng)名稱
獲取當(dāng)前系統(tǒng)版本號
獲取通用的唯一識別碼UUID
獲取當(dāng)前設(shè)備IP
獲取總內(nèi)存大小
獲取當(dāng)前可用內(nèi)存
獲取精準(zhǔn)電池電量
獲取電池當(dāng)前的狀態(tài)(共有4種狀態(tài))
獲取設(shè)備當(dāng)前的語言
二啊楚、具體內(nèi)容
1. 獲取屏幕寬度與高度
///?屏幕寬度
+?(CGFloat)getDeviceScreenWidth?{
return?[UIScreen?mainScreen].bounds.size.width;
}
///?屏幕高度
+?(CGFloat)getDeviceScreenHeight?{
return?[UIScreen?mainScreen].bounds.size.height;
}
[UIScreen mainScreen].bounds.size.width用的很普遍诫肠,一般來說定義成宏更好络它,然后根據(jù)屏幕寬高進(jìn)行尺寸的適配育勺。
2. 獲取設(shè)備版本號
+?(NSString?*)getDeviceName?{
//?需要#import?"sys/utsname.h"
struct?utsname?systemInfo;
uname(&systemInfo);
NSString?*deviceString?=?[NSString?stringWithCString:systemInfo.machine?encoding:NSUTF8StringEncoding];
if?([deviceString?isEqualToString:@"iPhone3,1"])????return?@"iPhone?4";
if?([deviceString?isEqualToString:@"iPhone3,2"])????return?@"iPhone?4";
if?([deviceString?isEqualToString:@"iPhone3,3"])????return?@"iPhone?4";
if?([deviceString?isEqualToString:@"iPhone4,1"])????return?@"iPhone?4S";
if?([deviceString?isEqualToString:@"iPhone5,1"])????return?@"iPhone?5";
if?([deviceString?isEqualToString:@"iPhone5,2"])????return?@"iPhone?5?(GSM+CDMA)";
if?([deviceString?isEqualToString:@"iPhone5,3"])????return?@"iPhone?5c?(GSM)";
if?([deviceString?isEqualToString:@"iPhone5,4"])????return?@"iPhone?5c?(GSM+CDMA)";
if?([deviceString?isEqualToString:@"iPhone6,1"])????return?@"iPhone?5s?(GSM)";
if?([deviceString?isEqualToString:@"iPhone6,2"])????return?@"iPhone?5s?(GSM+CDMA)";
if?([deviceString?isEqualToString:@"iPhone7,1"])????return?@"iPhone?6?Plus";
if?([deviceString?isEqualToString:@"iPhone7,2"])????return?@"iPhone?6";
if?([deviceString?isEqualToString:@"iPhone8,1"])????return?@"iPhone?6s";
if?([deviceString?isEqualToString:@"iPhone8,2"])????return?@"iPhone?6s?Plus";
if?([deviceString?isEqualToString:@"iPhone8,4"])????return?@"iPhone?SE";
if?([deviceString?isEqualToString:@"iPod1,1"])??????return?@"iPod?Touch?1G";
if?([deviceString?isEqualToString:@"iPod2,1"])??????return?@"iPod?Touch?2G";
if?([deviceString?isEqualToString:@"iPod3,1"])??????return?@"iPod?Touch?3G";
if?([deviceString?isEqualToString:@"iPod4,1"])??????return?@"iPod?Touch?4G";
if?([deviceString?isEqualToString:@"iPod5,1"])??????return?@"iPod?Touch?(5?Gen)";
if?([deviceString?isEqualToString:@"iPad1,1"])??????return?@"iPad";
if?([deviceString?isEqualToString:@"iPad1,2"])??????return?@"iPad?3G";
if?([deviceString?isEqualToString:@"iPad2,1"])??????return?@"iPad?2?(WiFi)";
if?([deviceString?isEqualToString:@"iPad2,2"])??????return?@"iPad?2";
if?([deviceString?isEqualToString:@"iPad2,3"])??????return?@"iPad?2?(CDMA)";
if?([deviceString?isEqualToString:@"iPad2,4"])??????return?@"iPad?2";
if?([deviceString?isEqualToString:@"iPad2,5"])??????return?@"iPad?Mini?(WiFi)";
if?([deviceString?isEqualToString:@"iPad2,6"])??????return?@"iPad?Mini";
if?([deviceString?isEqualToString:@"iPad2,7"])??????return?@"iPad?Mini?(GSM+CDMA)";
if?([deviceString?isEqualToString:@"iPad3,1"])??????return?@"iPad?3?(WiFi)";
if?([deviceString?isEqualToString:@"iPad3,2"])??????return?@"iPad?3?(GSM+CDMA)";
if?([deviceString?isEqualToString:@"iPad3,3"])??????return?@"iPad?3";
if?([deviceString?isEqualToString:@"iPad3,4"])??????return?@"iPad?4?(WiFi)";
if?([deviceString?isEqualToString:@"iPad3,5"])??????return?@"iPad?4";
if?([deviceString?isEqualToString:@"iPad3,6"])??????return?@"iPad?4?(GSM+CDMA)";
if?([deviceString?isEqualToString:@"iPad4,1"])??????return?@"iPad?Air?(WiFi)";
if?([deviceString?isEqualToString:@"iPad4,2"])??????return?@"iPad?Air?(Cellular)";
if?([deviceString?isEqualToString:@"iPad4,4"])??????return?@"iPad?Mini?2?(WiFi)";
if?([deviceString?isEqualToString:@"iPad4,5"])??????return?@"iPad?Mini?2?(Cellular)";
if?([deviceString?isEqualToString:@"iPad4,6"])??????return?@"iPad?Mini?2";
if?([deviceString?isEqualToString:@"iPad4,7"])??????return?@"iPad?Mini?3";
if?([deviceString?isEqualToString:@"iPad4,8"])??????return?@"iPad?Mini?3";
if?([deviceString?isEqualToString:@"iPad4,9"])??????return?@"iPad?Mini?3";
if?([deviceString?isEqualToString:@"iPad5,1"])??????return?@"iPad?Mini?4?(WiFi)";
if?([deviceString?isEqualToString:@"iPad5,2"])??????return?@"iPad?Mini?4?(LTE)";
if?([deviceString?isEqualToString:@"iPad5,3"])??????return?@"iPad?Air?2";
if?([deviceString?isEqualToString:@"iPad5,4"])??????return?@"iPad?Air?2";
if?([deviceString?isEqualToString:@"iPad6,3"])??????return?@"iPad?Pro?9.7";
if?([deviceString?isEqualToString:@"iPad6,4"])??????return?@"iPad?Pro?9.7";
if?([deviceString?isEqualToString:@"iPad6,7"])??????return?@"iPad?Pro?12.9";
if?([deviceString?isEqualToString:@"iPad6,8"])??????return?@"iPad?Pro?12.9";
if?([deviceString?isEqualToString:@"i386"])?????????return?@"Simulator";
if?([deviceString?isEqualToString:@"x86_64"])???????return?@"Simulator";
return?deviceString;
}
3. 獲取iPhone名稱
///?獲取iPhone名稱
+?(NSString?*)getiPhoneName?{
return?[UIDevice?currentDevice].name;
}
獲取的是你 iPhone 的名字蔑水。
4. 獲取app版本號
///?獲取app版本號
+?(NSString?*)getAPPVerion?{
return?[[[NSBundle?mainBundle]?infoDictionary]?objectForKey:@"CFBundleShortVersionString"];
}
5. 獲取電池電量
///?獲取電池電量
+?(CGFloat)getBatteryLevel?{
return?[UIDevice?currentDevice].batteryLevel;
}
這個方法獲取電池電量不是很精確啥箭,下邊會介紹一個獲取精確電池電量的。
6. 獲取當(dāng)前系統(tǒng)名稱
///?當(dāng)前系統(tǒng)名稱
+?(NSString?*)getSystemName?{
return?[UIDevice?currentDevice].systemName;
}
7. 獲取當(dāng)前系統(tǒng)版本號
///?當(dāng)前系統(tǒng)版本號
+?(NSString?*)getSystemVersion?{
return?[UIDevice?currentDevice].systemVersion;
}
8. 獲取通用的唯一識別碼UUID
///?通用唯一識別碼UUID
+?(NSString?*)getUUID?{
return?[[UIDevice?currentDevice]?identifierForVendor].UUIDString;
}
9. 獲取當(dāng)前設(shè)備IP
//?獲取當(dāng)前設(shè)備IP
+?(NSString?*)getDeviceIPAdress?{
NSString?*address?=?@"an?error?occurred?when?obtaining?ip?address";
struct?ifaddrs?*interfaces?=?NULL;
struct?ifaddrs?*temp_addr?=?NULL;
int?success?=?0;
success?=?getifaddrs(&interfaces);
if?(success?==?0)?{?//?0?表示獲取成功
temp_addr?=?interfaces;
while?(temp_addr?!=?NULL)?{
if(?temp_addr->ifa_addr->sa_family?==?AF_INET)?{
//?Check?if?interface?is?en0?which?is?the?wifi?connection?on?the?iPhone
if?([[NSString?stringWithUTF8String:temp_addr->ifa_name]?isEqualToString:@"en0"])?{
//?Get?NSString?from?C?String
address?=?[NSString?stringWithUTF8String:inet_ntoa(((struct?sockaddr_in?*)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr?=?temp_addr->ifa_next;
}
}
freeifaddrs(interfaces);
return?address;
}
10. 獲取總內(nèi)存大小
///?獲取總內(nèi)存大小
+?(long?long)getTotalMemorySize?{
return?[NSProcessInfo?processInfo].physicalMemory;
}
11. 獲取當(dāng)前可用內(nèi)存
///?獲取當(dāng)前可用內(nèi)存
+?(long?long)getAvailableMemorySize?{
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);
if?(kernReturn?!=?KERN_SUCCESS)
{
return?NSNotFound;
}
return?((vm_page_size?*?vmStats.free_count?+?vm_page_size?*?vmStats.inactive_count));
}
12. 獲取精準(zhǔn)電池電量
///?獲取精準(zhǔn)電池電量
+?(CGFloat)getCurrentBatteryLevel?{
UIApplication?*app?=?[UIApplication?sharedApplication];
if?(app.applicationState?==?UIApplicationStateActive||app.applicationState==UIApplicationStateInactive)?{
Ivar?ivar=??class_getInstanceVariable([app?class],"_statusBar");
id?status??=?object_getIvar(app,?ivar);
for?(id?aview?in?[status?subviews])?{
int?batteryLevel?=?0;
for?(id?bview?in?[aview?subviews])?{
if?([NSStringFromClass([bview?class])?caseInsensitiveCompare:@"UIStatusBarBatteryItemView"]?==?NSOrderedSame&&[[[UIDevice?currentDevice]?systemVersion]?floatValue]?>=6.0)?{
Ivar?ivar=??class_getInstanceVariable([bview?class],"_capacity");
if(ivar)?{
batteryLevel?=?((int?(*)(id,?Ivar))object_getIvar)(bview,?ivar);
if?(batteryLevel?>?0?&&?batteryLevel?<=?100)?{
return?batteryLevel;
}?else?{
return?0;
}
}
}
}
}
}
return?0;
}
上面這個方法是通過 runtime 獲取電池電量控件類私有變量的值爹梁,較為精確右犹。
13. 獲取電池當(dāng)前的狀態(tài)(共有4種狀態(tài))
///?獲取電池當(dāng)前的狀態(tài),共有4種狀態(tài)
+?(NSString?*)?getBatteryState?{
UIDevice?*device?=?[UIDevice?currentDevice];
if?(device.batteryState?==?UIDeviceBatteryStateUnknown)?{
return?@"UnKnow";
}?else?if?(device.batteryState?==?UIDeviceBatteryStateUnplugged){
return?@"Unplugged";
}?else?if?(device.batteryState?==?UIDeviceBatteryStateCharging){
return?@"Charging";
}?else?if?(device.batteryState?==?UIDeviceBatteryStateFull){
return?@"Full";
}
return?nil;
}
14. 獲取設(shè)備當(dāng)前的語言
///?獲取當(dāng)前語言
+?(NSString?*)getDeviceLanguage?{
NSArray?*languageArray?=?[NSLocale?preferredLanguages];
return?[languageArray?objectAtIndex:0];
}