在進(jìn)行iOS開發(fā)的過程中,我們有時(shí)需要對(duì)設(shè)備的類型進(jìn)行判別(比如發(fā)微博時(shí)顯示來自哪個(gè)客戶端,就是通過獲取設(shè)備的型號(hào)然后顯示給用戶看)以下就介紹獲取設(shè)備的方法。
我們可以通過代碼直接把方法寫在所需的類中,然后在類中調(diào)用此方法,但寫重復(fù)的代碼對(duì)于程序員來說是很不建議去做的事兒,因?yàn)檫@無疑是在做無用功,我們可以把它寫在一個(gè)類中封裝起來,這樣在別的類中就可以隨時(shí)調(diào)用。
參考:https://www.theiphonewiki.com/wiki/Models,這個(gè)是蘋果官方的設(shè)備類型說明,可以參考一下
【1】首先我們先建一個(gè)New File,命名為GetDeviceModelMethod
【2】在GetDeviceModelMethod.h文件中聲明這個(gè)方法(用于外部調(diào)用),具體代碼如下:
#import
@interfaceGetDeviceModelMethod :UIViewController
+ (NSString*)GetCurrentDeviceModel;
@end
【3】然后我們?cè)僭?GetDeviceModelMethod.m 文件中實(shí)現(xiàn)GetCurrentDeviceModel方法,(記得#include)具體代碼如下:
#import"GetDeviceModelMethod.h"
#include
@interfaceGetDeviceModelMethod()
@end
@implementationGetDeviceModelMethod
//獲得設(shè)備型號(hào)
+ (NSString*)GetCurrentDeviceModel
{
intmib[2];
size_tlen;
char*machine;
mib[0] =CTL_HW;
mib[1] =HW_MACHINE;
sysctl(mib,2,NULL, &len,NULL,0);
machine =malloc(len);
sysctl(mib,2, machine, &len,NULL,0);
NSString*platform = [NSStringstringWithCString:machineencoding:NSASCIIStringEncoding];
free(machine);
//iPhone
if([platformisEqualToString:@"iPhone1,1"])return@"iPhone 2G (A1203)";
if([platformisEqualToString:@"iPhone1,2"])return@"iPhone 3G (A1241/A1324)";
if([platformisEqualToString:@"iPhone2,1"])return@"iPhone 3GS (A1303/A1325)";
if([platformisEqualToString:@"iPhone3,1"])return@"iPhone 4 (A1332)";
if([platformisEqualToString:@"iPhone3,2"])return@"iPhone 4 (A1332)";
if([platformisEqualToString:@"iPhone3,3"])return@"iPhone 4 (A1349)";
if([platformisEqualToString:@"iPhone4,1"])return@"iPhone 4S (A1387/A1431)";
if([platformisEqualToString:@"iPhone5,1"])return@"iPhone 5 (A1428)";
if([platformisEqualToString:@"iPhone5,2"])return@"iPhone 5 (A1429/A1442)";
if([platformisEqualToString:@"iPhone5,3"])return@"iPhone 5c (A1456/A1532)";
if([platformisEqualToString:@"iPhone5,4"])return@"iPhone 5c (A1507/A1516/A1526/A1529)";
if([platformisEqualToString:@"iPhone6,1"])return@"iPhone 5s (A1453/A1533)";
if([platformisEqualToString:@"iPhone6,2"])return@"iPhone 5s (A1457/A1518/A1528/A1530)";
if([platformisEqualToString:@"iPhone7,2"])return@"iPhone 6 (A1549/A1586)";
if([platformisEqualToString:@"iPhone7,1"])return@"iPhone 6 Plus (A1522/A1524)";
if([platformisEqualToString:@"iPhone8,1"])return@"iPhone 6s (A1633/A1688/A1691/A1700)";
if([platformisEqualToString:@"iPhone8,2"])return@"iPhone 6s Plus (A1634/A1687/A1690/A1699)";
//iPod Touch
if([platformisEqualToString:@"iPod1,1"])return@"iPod Touch (A1213)";
if([platformisEqualToString:@"iPod2,1"])return@"iPod Touch 2G (A1288)";
if([platformisEqualToString:@"iPod3,1"])return@"iPod Touch 3G (A1318)";
if([platformisEqualToString:@"iPod4,1"])return@"iPod Touch 4G (A1367)";
if([platformisEqualToString:@"iPod5,1"])return@"iPod Touch 5G (A1421/A1509)";
if([platformisEqualToString:@"iPod7,1"])return@"iPod Touch 6G (A1574)";
//iPad
if([platformisEqualToString:@"iPad1,1"])return@"iPad (A1219/A1337)";
if([platformisEqualToString:@"iPad2,1"])return@"iPad 2 (A1395)";
if([platformisEqualToString:@"iPad2,2"])return@"iPad 2 (A1396)";
if([platformisEqualToString:@"iPad2,3"])return@"iPad 2 (A1397)";
if([platformisEqualToString:@"iPad2,4"])return@"iPad 2 (A1395+New Chip)";
if([platformisEqualToString:@"iPad3,1"])return@"iPad 3 (A1416)";
if([platformisEqualToString:@"iPad3,2"])return@"iPad 3 (A1403)";
if([platformisEqualToString:@"iPad3,3"])return@"iPad 3 (A1430)";
if([platformisEqualToString:@"iPad3,4"])return@"iPad 4 (A1458)";
if([platformisEqualToString:@"iPad3,5"])return@"iPad 4 (A1459)";
if([platformisEqualToString:@"iPad3,6"])return@"iPad 4 (A1460)";
//iPad Air
if([platformisEqualToString:@"iPad4,1"])return@"iPad Air (A1474)";
if([platformisEqualToString:@"iPad4,2"])return@"iPad Air (A1475)";
if([platformisEqualToString:@"iPad4,3"])return@"iPad Air (A1476)";
if([platformisEqualToString:@"iPad5,3"])return@"iPad Air 2 (A1566)";
if([platformisEqualToString:@"iPad5,4"])return@"iPad Air 2 (A1567)";
//iPad mini
if([platformisEqualToString:@"iPad2,5"])return@"iPad mini 1G (A1432)";
if([platformisEqualToString:@"iPad2,6"])return@"iPad mini 1G (A1454)";
if([platformisEqualToString:@"iPad2,7"])return@"iPad mini 1G (A1455)";
if([platformisEqualToString:@"iPad4,4"])return@"iPad mini 2 (A1489)";
if([platformisEqualToString:@"iPad4,5"])return@"iPad mini 2 (A1490)";
if([platformisEqualToString:@"iPad4,6"])return@"iPad mini 2 (A1491)";
if([platformisEqualToString:@"iPad4,7"])return@"iPad mini 3 (A1599)";
if([platformisEqualToString:@"iPad4,8"])return@"iPad mini 3 (A1600)";
if([platformisEqualToString:@"iPad4,9"])return@"iPad mini 3 (A1601)";
if([platformisEqualToString:@"iPad5,1"])return@"iPad mini 4 (A1538)";
if([platformisEqualToString:@"iPad5,2"])return@"iPad mini 4 (A1550)";
if([platformisEqualToString:@"i386"])return@"iPhone Simulator";
if([platformisEqualToString:@"x86_64"])return@"iPhone Simulator";
returnplatform;
}
@end
【4】這樣我們就可以在別的類里調(diào)用該方法了,具體使用方法如下:
導(dǎo)入頭文件#import"GetDeviceModelMethod.h"
NSString*CurrentDeviceModel=[GetDeviceModelMethodGetCurrentDeviceModel];
NSLog(@"設(shè)備類型=%@",CurrentDeviceModel);//在窗口打印設(shè)備類型
如有不當(dāng)之處,歡迎批評(píng)補(bǔ)充!