獲取iOS設(shè)備型號(hào)--截止到2018-9-21的所有iOS設(shè)備

獲取iOS設(shè)備型號(hào)逐抑,截止到2018-9-21的所有iOS設(shè)備

Objective-C

下面是 UIDevice+UIDeviceExtension.h 文件

聲明這個(gè)返回值為NSString的類方法

#import <UIKit/UIKit.h>

@interface UIDevice (UIDeviceExtension)
/*
 獲取設(shè)備描述
 */
+ (NSString *)getCurrentDeviceModelDescription;
/*
 由獲取到的設(shè)備描述产雹,來(lái)匹配設(shè)備型號(hào)
 */
+ (NSString *)getCurrentDeviceModel;
@end

獲取設(shè)備具體詳細(xì)的描述

+ (NSString *)getCurrentDeviceModelDescription{
    int mib[2];
    size_t len;
    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 = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
    free(machine);
    return platform;
}

獲取設(shè)備具體設(shè)備型號(hào)

+ (NSString *)getCurrentDeviceModel{
    
    NSString *platform = [UIDevice getCurrentDeviceModelDescription];
    
    if([platform isEqualToString:@"iPhone3,1"])return @"iPhone 4";
    if([platform isEqualToString:@"iPhone3,2"])return @"iPhone 4";
    if([platform isEqualToString:@"iPhone3,3"])return @"iPhone 4";
    
    if([platform isEqualToString:@"iPhone4,1"])return @"iPhone 4S";
    
    if([platform isEqualToString:@"iPhone5,1"])return @"iPhone 5";
    if([platform isEqualToString:@"iPhone5,2"])return @"iPhone 5(GSM+CDMA)";
    if([platform isEqualToString:@"iPhone5,3"])return @"iPhone 5c(GSM)";
    if([platform isEqualToString:@"iPhone5,4"])return @"iPhone 5c(GSM+CDMA)";
    
    if([platform isEqualToString:@"iPhone6,1"])return @"iPhone 5s(GSM)";
    if([platform isEqualToString:@"iPhone6,2"])return @"iPhone 5s(GSM+CDMA)";
    
    if([platform isEqualToString:@"iPhone7,1"])return @"iPhone 6 Plus";
    if([platform isEqualToString:@"iPhone7,2"])return @"iPhone 6";
    
    if([platform isEqualToString:@"iPhone8,1"])return @"iPhone 6s";
    if([platform isEqualToString:@"iPhone8,2"])return @"iPhone 6s Plus";
    if([platform isEqualToString:@"iPhone8,4"])return @"iPhone SE";
   
    if([platform isEqualToString:@"iPhone9,1"])return @"iPhone 7 國(guó)行搓侄、日版毛雇、港行";
    if([platform isEqualToString:@"iPhone9,2"])return @"iPhone 7 Plus 港行择卦、國(guó)行";
    if([platform isEqualToString:@"iPhone9,3"])return @"iPhone 7 美版事富、臺(tái)版";
    if([platform isEqualToString:@"iPhone9,4"])return @"iPhone 7 Plus 美版砰逻、臺(tái)版";
    
    if([platform isEqualToString:@"iPhone10,1"])return @"iPhone 8 國(guó)行(A1863)畜眨、日行(A1906)";
    if([platform isEqualToString:@"iPhone10,4"])return @"iPhone 8 美版(Global/A1905)";
    
    if([platform isEqualToString:@"iPhone10,2"])return @"iPhone 8 Plus 國(guó)行(A1864)昼牛、日行(A1898)";
    if([platform isEqualToString:@"iPhone10,5"])return @"iPhone 8 Plus 美版(Global/A1897)";
    
    if([platform isEqualToString:@"iPhone10,3"])return @"iPhone X 國(guó)行(A1865)、日行(A1902)";
    if([platform isEqualToString:@"iPhone10,6"])return @"iPhone X 美版(Global/A1901)";
    
    if ([platform isEqualToString:@"iPhone11,2"])return @"iPhone XS";
    if ([platform isEqualToString:@"iPhone11,6"])return @"iPhone XS Max";
    if ([platform isEqualToString:@"iPhone11,8"])return @"iPhone XR";
    
    if([platform isEqualToString:@"iPod1,1"])return @"iPod Touch 1G";
    
    if([platform isEqualToString:@"iPod2,1"])return @"iPod Touch 2G";
    
    if([platform isEqualToString:@"iPod3,1"])return @"iPod Touch 3G";
    
    if([platform isEqualToString:@"iPod4,1"])return @"iPod Touch 4G";
    
    if([platform isEqualToString:@"iPod5,1"])return @"iPod Touch(5 Gen)";
    
    if([platform isEqualToString:@"iPad1,1"])return @"iPad";
    if([platform isEqualToString:@"iPad1,2"])return @"iPad 3G";
    
    if([platform isEqualToString:@"iPad2,1"])return @"iPad 2(WiFi)";
    if([platform isEqualToString:@"iPad2,2"])return @"iPad 2";
    if([platform isEqualToString:@"iPad2,3"])return @"iPad 2(CDMA)";
    if([platform isEqualToString:@"iPad2,4"])return @"iPad 2";
    if([platform isEqualToString:@"iPad2,5"])return @"iPad Mini(WiFi)";
    if([platform isEqualToString:@"iPad2,6"])return @"iPad Mini";
    if([platform isEqualToString:@"iPad2,7"])return @"iPad Mini(GSM+CDMA)";
    
    if([platform isEqualToString:@"iPad3,1"])return @"iPad 3(WiFi)";
    if([platform isEqualToString:@"iPad3,2"])return @"iPad 3(GSM+CDMA)";
    if([platform isEqualToString:@"iPad3,3"])return @"iPad 3";
    if([platform isEqualToString:@"iPad3,4"])return @"iPad 4(WiFi)";
    if([platform isEqualToString:@"iPad3,5"])return @"iPad 4";
    if([platform isEqualToString:@"iPad3,6"])return @"iPad 4(GSM+CDMA)";
    
    if([platform isEqualToString:@"iPad4,1"])return @"iPad Air(WiFi)";
    if([platform isEqualToString:@"iPad4,2"])return @"iPad Air(Cellular)";
    if([platform isEqualToString:@"iPad4,4"])return @"iPad Mini 2(WiFi)";
    if([platform isEqualToString:@"iPad4,5"])return @"iPad Mini 2(Cellular)";
    if([platform isEqualToString:@"iPad4,6"])return @"iPad Mini 2";
    if([platform isEqualToString:@"iPad4,7"])return @"iPad Mini 3";
    if([platform isEqualToString:@"iPad4,8"])return @"iPad Mini 3";
    if([platform isEqualToString:@"iPad4,9"])return @"iPad Mini 3";
    
    if([platform isEqualToString:@"iPad5,1"])return @"iPad Mini 4(WiFi)";
    if([platform isEqualToString:@"iPad5,2"])return @"iPad Mini 4(LTE)";
    if([platform isEqualToString:@"iPad5,3"])return @"iPad Air 2";
    if([platform isEqualToString:@"iPad5,4"])return @"iPad Air 2";
    
    if([platform isEqualToString:@"iPad6,3"])return @"iPad Pro 9.7";
    if([platform isEqualToString:@"iPad6,4"])return @"iPad Pro 9.7";
    if([platform isEqualToString:@"iPad6,7"])return @"iPad Pro 12.9";
    if([platform isEqualToString:@"iPad6,8"])return @"iPad Pro 12.9";
    if([platform isEqualToString:@"iPad6,11"])return @"iPad 5(WiFi)";
    if([platform isEqualToString:@"iPad6,12"])return @"iPad 5(Cellular)";
    
    if([platform isEqualToString:@"iPad7,1"])return @"iPad Pro 12.9 inch 2nd gen(WiFi)";
    if([platform isEqualToString:@"iPad7,2"])return @"iPad Pro 12.9 inch 2nd gen(Cellular)";
    if([platform isEqualToString:@"iPad7,3"])return @"iPad Pro 10.5 inch(WiFi)";
    if([platform isEqualToString:@"iPad7,4"])return @"iPad Pro 10.5 inch(Cellular)";
    
    if([platform isEqualToString:@"AppleTV2,1"])return @"Apple TV 2";
    if([platform isEqualToString:@"AppleTV3,1"])return @"Apple TV 3";
    if([platform isEqualToString:@"AppleTV3,2"])return @"Apple TV 3";
    if([platform isEqualToString:@"AppleTV5,3"])return @"Apple TV 4";
    
    if([platform isEqualToString:@"i386"])return @"Simulator";
    if([platform isEqualToString:@"x86_64"])return @"Simulator";
    return platform;
}

如何使用
首先在.m文件中導(dǎo)入以下兩個(gè)頭文件

#import "UIDevice+UIDeviceExtension.h"
#import <sys/sysctl.h>

然后在需要獲取設(shè)備型號(hào)地方這樣寫,用一個(gè)NSString類型的對(duì)象接收

NSString *string = [UIDevice getCurrentDeviceModel];
NSLog(@"設(shè)備型號(hào):%@",string);
NSString *string =[UIDevice getCurrentDeviceModelDescription];
NSLog(@"設(shè)備描述:%@",string);

Swift

獲取設(shè)備具體詳細(xì)的描述

 //獲取設(shè)備具體詳細(xì)的描述
    public class func getCurrentDeviceModelDescription() -> String {
        
        var systemInfo = utsname()
        
        uname(&systemInfo)
        
        let machineMirror = Mirror(reflecting: systemInfo.machine)
        
        let identifierDescription = machineMirror.children.reduce("") { identifier, element in
            
            guard let value = element.value as? Int8, value != 0 else { return identifier }
            
            let identifierDescription = identifier + String(UnicodeScalar(UInt8(value)))
            
            return identifierDescription;
            
        }
        return identifierDescription
    }

獲取設(shè)備具體型號(hào)

 //獲取設(shè)備具體型號(hào)
    public class func getCurrentDeviceModel() -> String{
        
        let identifier = UIDevice.getCurrentDeviceModelDescription()
        
        switch identifier {
            
        case "iPod5,1":                                 return "iPod Touch 5"
            
        case "iPod7,1":                                 return "iPod Touch 6"
            
        case "iPhone3,1", "iPhone3,2", "iPhone3,3":     return "iPhone 4"
            
        case "iPhone4,1":                               return "iPhone 4s"
            
        case "iPhone5,1", "iPhone5,2":                  return "iPhone 5"
        case "iPhone5,3", "iPhone5,4":                  return "iPhone 5c"
            
        case "iPhone6,1", "iPhone6,2":                  return "iPhone 5s"
            
        case "iPhone7,2":                               return "iPhone 6"
        case "iPhone7,1":                               return "iPhone 6 Plus"
            
        case "iPhone8,1":                               return "iPhone 6s"
        case "iPhone8,2":                               return "iPhone 6s Plus"
        case "iPhone8,4":                               return "iPhone SE"
            
        case "iPhone9,1":                               return "iPhone 7 (CDMA)"
        case "iPhone9,3":                               return "iPhone 7 (GSM)"
        case "iPhone9,2":                               return "iPhone 7 Plus (CDMA)"
        case "iPhone9,4":                               return "iPhone 7 Plus (GSM)"
            
        case "iPhone10,1", "iPhone10,4":                return "iPhone 8"
        case "iPhone10,2", "iPhone10,5":                return "iPhone 8 Plus"
        case "iPhone10,3", "iPhone10,6":                return "iPhone X"
            
        case "iPhone11,2":                              return "iPhone XS"
        case "iPhone11,6":                              return "iPhone XS Max"
        case "iPhone11,8":                              return "iPhone XR"
            
        case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2"
            
        case "iPad3,1", "iPad3,2", "iPad3,3":           return "iPad 3"
            
        case "iPad3,4", "iPad3,5", "iPad3,6":           return "iPad 4"
            
        case "iPad4,1", "iPad4,2", "iPad4,3":           return "iPad Air"
            
        case "iPad5,3", "iPad5,4":                      return "iPad Air 2"
            
        case "iPad2,5", "iPad2,6", "iPad2,7":           return "iPad Mini"
            
        case "iPad4,4", "iPad4,5", "iPad4,6":           return "iPad Mini 2"
            
        case "iPad4,7", "iPad4,8", "iPad4,9":           return "iPad Mini 3"
            
        case "iPad5,1", "iPad5,2":                      return "iPad Mini 4"
            
        case "iPad6,7", "iPad6,8":                      return "iPad Pro"
            
        case "AppleTV5,3":                              return "Apple TV"
            
        case "i386", "x86_64":                          return "Simulator"
            
        default:                                        return identifier
        }
    }
    

完整代碼演示:https://git.oschina.net/LiynXu/GetDeviceModel.git 歡迎訪問(wèn)康聂!

效果展示:

WX20180922-130044@2x.png
IMG_0073.PNG

相關(guān)鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贰健,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恬汁,更是在濱河造成了極大的恐慌伶椿,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異脊另,居然都是意外死亡导狡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門偎痛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烘豌,“玉大人,你說(shuō)我怎么就攤上這事看彼±扰澹” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵靖榕,是天一觀的道長(zhǎng)标锄。 經(jīng)常有香客問(wèn)我,道長(zhǎng)茁计,這世上最難降的妖魔是什么料皇? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮星压,結(jié)果婚禮上践剂,老公的妹妹穿的比我還像新娘。我一直安慰自己娜膘,他們只是感情好逊脯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著竣贪,像睡著了一般军洼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上演怎,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天匕争,我揣著相機(jī)與錄音,去河邊找鬼爷耀。 笑死甘桑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的歹叮。 我是一名探鬼主播跑杭,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盗胀!你這毒婦竟也來(lái)了艘蹋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤票灰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屑迂,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸策,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惹盼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸汗。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖手报,靈堂內(nèi)的尸體忽然破棺而出蚯舱,到底是詐尸還是另有隱情,我是刑警寧澤掩蛤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布枉昏,位于F島的核電站,受9級(jí)特大地震影響揍鸟,放射性物質(zhì)發(fā)生泄漏兄裂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一阳藻、第九天 我趴在偏房一處隱蔽的房頂上張望晰奖。 院中可真熱鬧,春花似錦腥泥、人聲如沸匾南。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)午衰。三九已至,卻和暖如春冒萄,著一層夾襖步出監(jiān)牢的瞬間臊岸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工尊流, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帅戒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓崖技,卻偏偏與公主長(zhǎng)得像逻住,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迎献,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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