iOS获取设备型号和App版本号等信息(OC+Swift)

您所在的位置:网站首页 苹果如何查询版本号码 iOS获取设备型号和App版本号等信息(OC+Swift)

iOS获取设备型号和App版本号等信息(OC+Swift)

2024-07-10 19:49| 来源: 网络整理| 查看: 265

好久没有写过博客了,因为中间工作比较忙,然后有些个人事情所以耽误了。但是之前写的博客还一直有人来问一些问题,有些之前写的已经比较久了,有些需要实时更新的也没来得及更新,发现会跟一些童鞋造成困惑,所以以后也希望能及时更新和写一些新的内容。

我之前博客的地址:一毛的博客,也是主要介绍iOS开发的,以后都在简书更新吧。希望大家能继续支持。

iOS开发过程中,有时候为了更好的用户体验或者为了bug跟踪,可能会需要获取用户的应用信息、系统信息、设备信息。这些信息的获取可以根据不同的设备或者App、系统版本来提供不同的功能或更好的用户体验,或者让开发者能更好的分析用户的问题原因。

你说不要啰嗦了:Talk is cheap, show me the code!

好的,code来了:

获取设备名称

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

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

获取系统版本号

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

有些人可能会说了:“裤子都脱了,你就给我看这个!看你之前写的博客还能看点儿干货,今天第一篇就写着么个玩意儿?尤其是获取设备型号那个,获取出来一个iPhone,你确定不是在逗我吧?”

看官别急,其实这次最主要的就是来分享获取设备型号的方法的,因为我看国内还很少有Swift写的一些东西,也不知道是不是因为我没有找到,就想自己写出来给大家分享,顺便做个笔记。

你会说:获取设备型号比较麻烦,又用的是C语言的一些东西,比较麻烦,而且还得记住所有设备版本号例如:iPhone8,2,实在是记不住啊。当然不用记住,用的时候拷过来就行了,因为我也记不住😄

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"; if ([deviceModel isEqualToString:@"iPhone9,1"]) return @"iPhone 7 (CDMA)"; if ([deviceModel isEqualToString:@"iPhone9,3"]) return @"iPhone 7 (GSM)"; if ([deviceModel isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus (CDMA)"; if ([deviceModel isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus (GSM)"; //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 "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 "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 版本之后才能使用的:现在不会还有人使用 Swift 1.2 吧?

你还问我怎么用?好吧,骚年,送佛送到西,您看好了,把上面的扩展扔到你的项目中,然后就可以用下面的语句调用了:

let modelName = UIDevice.currentDevice().modelName

好了,今天就写到这儿吧,希望以后还有时间有精力来更多的更新一些内容吧。

再次谢谢大家的支持!也希望哪儿有写的不对的地方,欢迎大家批评指正。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3