iOS獲取設備型號和App版本號等信息(OC+Swift)

獲取設備名稱

OC代碼
NSString *deviceName = [[UIDevice currentDevice] name];

Swift代碼
let deviceName = UIDevice.currentDevice().name

獲取系統(tǒng)版本號

OC代碼
NSString *sysVersion = [[UIDevice currentDevice] systemVersion];

Swift代碼
let sysVersion = UIDevice.currentDevice().systemVersion

獲取設備唯一標識符

OC代碼
NSString *deviceUUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

Swift代碼
let deviceUUID = UIDevice.currentDevice().identifierForVendor?.UUIDString

獲取設備的型號

OC代碼
NSString *deviceModel = [[UIDevice currentDevice] model];

Swift代碼
let deviceModel = UIDevice.currentDevice().model

獲取App相關的信息

OC代碼

NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];

// 獲取App的版本號
NSString *appVersion = [infoDic objectForKey:@"CFBundleShortVersionString"];

// 獲取App的build版本
NSString *appBuildVersion = [infoDic objectForKey:@"CFBundleVersion"];

// 獲取App的名稱
NSString *appName = [infoDic objectForKey:@"CFBundleDisplayName"];
Swift代碼

let infoDic = NSBundle.mainBundle().infoDictionary

// 獲取App的版本號
let appVersion = infoDic?["CFBundleShortVersionString"]

// 獲取App的build版本
let appBuildVersion = infoDic?["CFBundleVersion"]

// 獲取App的名稱
let appName = infoDic?["CFBundleDisplayName"]

iOS獲取具體設備型號
OC代碼獲取iOS設備型號:

// 需要#import

(NSString)deviceModelName
{
struct utsname systemInfo;
uname(&systemInfo);
NSString deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];

//iPhone 系列
if ([deviceModel isEqualToString:@"iPhone1,1"]) return @"iPhone 1G";
if ([deviceModel isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([deviceModel isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([deviceModel isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([deviceModel isEqualToString:@"iPhone3,2"]) return @"Verizon iPhone 4";
if ([deviceModel isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([deviceModel isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([deviceModel isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
if ([deviceModel isEqualToString:@"iPhone5,3"]) return @"iPhone 5C";
if ([deviceModel isEqualToString:@"iPhone5,4"]) return @"iPhone 5C";
if ([deviceModel isEqualToString:@"iPhone6,1"]) return @"iPhone 5S";
if ([deviceModel isEqualToString:@"iPhone6,2"]) return @"iPhone 5S";
if ([deviceModel isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([deviceModel isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([deviceModel isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([deviceModel isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";

//iPod 系列
if ([deviceModel isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([deviceModel isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([deviceModel isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([deviceModel isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([deviceModel isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";

//iPad 系列
if ([deviceModel isEqualToString:@"iPad1,1"]) return @"iPad";
if ([deviceModel isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([deviceModel isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)";
if ([deviceModel isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([deviceModel isEqualToString:@"iPad2,4"]) return @"iPad 2 (32nm)";
if ([deviceModel isEqualToString:@"iPad2,5"]) return @"iPad mini (WiFi)";
if ([deviceModel isEqualToString:@"iPad2,6"]) return @"iPad mini (GSM)";
if ([deviceModel isEqualToString:@"iPad2,7"]) return @"iPad mini (CDMA)";

if ([deviceModel isEqualToString:@"iPad3,1"]) return @"iPad 3(WiFi)";
if ([deviceModel isEqualToString:@"iPad3,2"]) return @"iPad 3(CDMA)";
if ([deviceModel isEqualToString:@"iPad3,3"]) return @"iPad 3(4G)";
if ([deviceModel isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([deviceModel isEqualToString:@"iPad3,5"]) return @"iPad 4 (4G)";
if ([deviceModel isEqualToString:@"iPad3,6"]) return @"iPad 4 (CDMA)";

if ([deviceModel isEqualToString:@"iPad4,1"]) return @"iPad Air";
if ([deviceModel isEqualToString:@"iPad4,2"]) return @"iPad Air";
if ([deviceModel isEqualToString:@"iPad4,3"]) return @"iPad Air";
if ([deviceModel isEqualToString:@"iPad5,3"]) return @"iPad Air 2";
if ([deviceModel isEqualToString:@"iPad5,4"]) return @"iPad Air 2";
if ([deviceModel isEqualToString:@"i386"]) return @"Simulator";
if ([deviceModel isEqualToString:@"x86_64"]) return @"Simulator";

if ([deviceModel isEqualToString:@"iPad4,4"]
||[deviceModel isEqualToString:@"iPad4,5"]
||[deviceModel isEqualToString:@"iPad4,6"]) return @"iPad mini 2";

if ([deviceModel isEqualToString:@"iPad4,7"]
||[deviceModel isEqualToString:@"iPad4,8"]
||[deviceModel isEqualToString:@"iPad4,9"]) return @"iPad mini 3";

return deviceModel;
}

記得一定要#import

Swift代碼獲取iOS設備型號:

//MARK: - UIDevice延展
public extension UIDevice {

var modelName: String {
    var systemInfo = utsname()
    uname(&systemInfo)
    let machineMirror = Mirror(reflecting: systemInfo.machine)
    let identifier = machineMirror.children.reduce("") { identifier, element in
        guard let value = element.value as? Int8 where value != 0 else { return identifier }
        return identifier + String(UnicodeScalar(UInt8(value)))
    }

    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 "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
    }
}
}

這個是在 Swift 2.0 版本之后才能使用的.
使用方法:把上面的擴展扔到你的項目中,然后就可以用下面的語句調用了:

let modelName = UIDevice.currentDevice().modelName
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末智听,一起剝皮案震驚了整個濱河市恩敌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乔外,老刑警劉巖床三,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杨幼,居然都是意外死亡撇簿,警方通過查閱死者的電腦和手機聂渊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來四瘫,“玉大人汉嗽,你說我怎么就攤上這事≌颐郏” “怎么了饼暑?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洗做。 經(jīng)常有香客問我弓叛,道長,這世上最難降的妖魔是什么诚纸? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任撰筷,我火速辦了婚禮,結果婚禮上咬清,老公的妹妹穿的比我還像新娘闭专。我一直安慰自己,他們只是感情好旧烧,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布影钉。 她就那樣靜靜地躺著,像睡著了一般掘剪。 火紅的嫁衣襯著肌膚如雪平委。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天夺谁,我揣著相機與錄音廉赔,去河邊找鬼。 笑死匾鸥,一個胖子當著我的面吹牛蜡塌,可吹牛的內容都是我干的。 我是一名探鬼主播勿负,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼馏艾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奴愉?” 一聲冷哼從身側響起琅摩,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎锭硼,沒想到半個月后房资,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡檀头,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年轰异,在試婚紗的時候發(fā)現(xiàn)自己被綠了岖沛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡搭独,死狀恐怖烫止,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情戳稽,我是刑警寧澤馆蠕,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站惊奇,受9級特大地震影響互躬,放射性物質發(fā)生泄漏。R本人自食惡果不足惜颂郎,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一吼渡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乓序,春花似錦寺酪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至陨献,卻和暖如春盒犹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眨业。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工急膀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人龄捡。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓卓嫂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親聘殖。 傳聞我的和親對象是個殘疾皇子晨雳,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • 好久沒有寫過博客了,因為中間工作比較忙就斤,然后有些個人事情所以耽誤了悍募。但是之前寫的博客還一直有人來問一些問題蘑辑,有些之...
    winann閱讀 30,109評論 18 55
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫洋机、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 在江邊的樹林里 蓋一座木屋 木屋前的走廊上 擺著一張桌子 兩把椅子 一把茶壺 下午三四點鐘 聽著知了的叫聲 喝一口...
    一葉茶閱讀 191評論 0 2
  • “仇冰今兒怎么這么大火氣洋魂?” 趁查小茶在臺上和參加表演的員工對流程之時绷旗,白松問蘇珊喜鼓。 “我看她是那啥仗人勢∠沃”蘇珊...
    顆粒crown閱讀 512評論 2 8
  • 蒙蒙細雨已經(jīng)下了很多天了庄岖,以為今天會不下。到了學校角骤,就下起了大雨隅忿。看著窗檐上往下的雨邦尊,孩子們讀書聲背桐,自己轉身低頭寫...
    螢火蟲菇娘閱讀 183評論 0 0