iOS-----獲取設(shè)備信息

#pragma mark----獲取設(shè)備型號(hào)

+ (NSString *)deviceModel{

return? [UIDevice currentDevice].model;// e.g. @"iPhone", @"iPod touch"

}

#pragma mark-----獲取屏幕寬度

+ (CGFloat)deviceScreenWidth{

return [UIScreen mainScreen].bounds.size.width;

}

#pragma mark-----獲取屏幕高度

+ (CGFloat)deviceScreenHeight{

return [UIScreen mainScreen].bounds.size.height;

}

#pragma mark-----獲取設(shè)備名字--也就是你的設(shè)備是5,還是6?

+(NSString *)deviceName{? ??

//需加入系統(tǒng)頭文件#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:@"iPhone9,1"])? ? return @"iPhone 7 Plus";

if ([deviceString isEqualToString:@"iPhone9,2"])? ? return @"iPhone 7";

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;

}

具體獲取網(wǎng)址:https://www.theiphonewiki.com/wiki/Models

#pragma mark----獲取iPhone名稱------也就是你iPhone的名字乖寒,如果你設(shè)置的是小明价捧,則為小明的iPhone

+ (NSString *)iphoneName{

return [UIDevice currentDevice].name;

}

#pragma mark------獲取APP版本號(hào)

+ (NSString *)appVersion{

return [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleShortVersionString"];

}

#pragma mark-----獲取App的build版本

+ (NSString *)appBuildVersion{

return [[[NSBundle mainBundle]infoDictionary]objectForKey:@"CFBundleDisplayName"];

}

#pragma mark-----獲取電池電量

+ (CGFloat)batteryLevel{

return [UIDevice currentDevice].batteryLevel;//但是這種方法獲取的電池電量不是太準(zhǔn)確

}

#pragma mark----獲取當(dāng)前系統(tǒng)名稱

+ (NSString *)currentSystemName{

return [UIDevice currentDevice].systemName;//系統(tǒng):iOS

}

#pragma mark-----獲取當(dāng)前系統(tǒng)的版本號(hào)

+ (NSString *)currentSystemVersion{

return [UIDevice currentDevice].systemVersion;//iOS 10.3.2

}

#pragma mark-----獲取通用的唯一識(shí)別碼UUID---蘋果公司建議使用UUID為應(yīng)用生成唯一標(biāo)識(shí)字符串

+ (NSString *)deviceUUID{

return [[UIDevice currentDevice]identifierForVendor].UUIDString;

}

#pragma mark----獲取App的名稱

+ (NSString *)appName{

return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];

}

#pragma mark-----廣告位標(biāo)識(shí)符

+ (NSString *)deviceAdvertisingIdentifier{

//---需要導(dǎo)入AdSupport 框架-----#import<AdSupport/ASIdentifierManager.h>

return [[[ASIdentifierManager sharedManager]advertisingIdentifier]UUIDString];

}

#pragma mark----獲取總內(nèi)存大小

+ (long long)totalMemorySize{

return [NSProcessInfo processInfo].physicalMemory;

}

#pragma mark---獲取當(dāng)前可用內(nèi)存

+ (long long)getAvailableMemorySize {? ??

? ? //需要導(dǎo)入#include<mach/mach.h>

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));

}

#pragma mark----獲取當(dāng)前任務(wù)所占用的內(nèi)存(單位:MB)

+ (double) usedMemory{? ? ? ?

//需要導(dǎo)入#include<mach/mach.h>

task_basic_info_data_t taskInfo;

mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;

kern_return_t kernReturn = task_info(mach_task_self(),

TASK_BASIC_INFO,

(task_info_t)&taskInfo,

&infoCount);

if (kernReturn != KERN_SUCCESS

) {

return NSNotFound;

}

return taskInfo.resident_size / 1024.0 / 1024.0;

}

#pragma mark-------獲取精準(zhǔn)電池電量

+ (CGFloat)currentBatteryLevel{??

? //需要導(dǎo)入系統(tǒng)頭文件#import<objc/runtime.h>

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;

}

#pragma mark-----獲取電池當(dāng)前的狀態(tài)-共四種

+ (NSString *)batterySatte{

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;

}

#pragma mark---獲取當(dāng)前語言

+ (NSString *)deviceLanguage{

NSArray* languageArray = [NSLocale preferredLanguages];

return [languageArray objectAtIndex:0];

}

#pragma mark----當(dāng)前手機(jī)連接的WIFI名稱(SSID)

- (NSString *)getWifiName{? ? ??

? //需要導(dǎo)入文件#import<SystemConfiguration/CaptiveNetwork.h>

NSString *wifiName = nil;

CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();

if (!wifiInterfaces) {

return nil;

}

NSArray *interfaces = (__bridge NSArray *)wifiInterfaces;

for (NSString *interfaceName in interfaces) {

CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));

if (dictRef) {

NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;

wifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];

CFRelease(dictRef);

}

}

CFRelease(wifiInterfaces);

return wifiName;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惦蚊,一起剝皮案震驚了整個(gè)濱河市呼猪,隨后出現(xiàn)的幾起案子卤档,更是在濱河造成了極大的恐慌逃贝,老刑警劉巖谣辞,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異沐扳,居然都是意外死亡泥从,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門沪摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躯嫉,“玉大人,你說我怎么就攤上這事杨拐∑聿停” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵哄陶,是天一觀的道長(zhǎng)帆阳。 經(jīng)常有香客問我,道長(zhǎng)屋吨,這世上最難降的妖魔是什么蜒谤? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任山宾,我火速辦了婚禮,結(jié)果婚禮上鳍徽,老公的妹妹穿的比我還像新娘资锰。我一直安慰自己,他們只是感情好阶祭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胖翰,像睡著了一般切厘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疫稿,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天培他,我揣著相機(jī)與錄音,去河邊找鬼遗座。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猛遍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播号坡,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼懊烤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了宽堆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤壁肋,失蹤者是張志新(化名)和其女友劉穎籽慢,沒想到半個(gè)月后浸遗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗡综,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年察净,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氢卡。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡译秦,死狀恐怖峡捡,靈堂內(nèi)的尸體忽然破棺而出筑悴,到底是詐尸還是另有隱情,我是刑警寧澤砚婆,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布突勇,位于F島的核電站,受9級(jí)特大地震影響甲馋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜定躏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一账磺、第九天 我趴在偏房一處隱蔽的房頂上張望共屈。 院中可真熱鬧,春花似錦借宵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至断部,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間她渴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工趁耗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人满葛。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓罢屈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缠捌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容