50-Swift 之应用信息&设备信息的获取

一、前言

             目前在App开发中,应用信息& 设备信息的获取变的必要了。例如:为了解决App崩溃,开发人员就会获取用户设备信息和应用的信息提交到一个地方,然后进行分析...等。那么怎么获取应用信息和设备信息呢?

二 、应用信息的获取

/**
 获取应用信息
 */
let ApplicationInfoDictionary = Bundle.main.infoDictionary
print(ApplicationInfoDictionary!)

/**
 获取应用的名字
 */
let ApplicationName = ApplicationInfoDictionary?["CFBundleDisplayName"]
print(ApplicationName!)

/**
 应用系统的版本
 */
let AppSystemVersion = ApplicationInfoDictionary?["MinimumOSVersion"]
print(AppSystemVersion!)

/**
 设备的SDK的 名字
 */
let DeviceName = ApplicationInfoDictionary?["DTSDKName"]
print(DeviceName!)

/**
 平台的名字
 */
let PlatName = ApplicationInfoDictionary?["DTPlatformName"]
print(PlatName!)

/**
 平台的版本
 */
let PlatVersion = ApplicationInfoDictionary?["DTPlatformVersion"]
print(PlatVersion!)

/**
 设备的语言
 */
let AppLanguage = ApplicationInfoDictionary?["CFBundleDevelopmentRegion"]
print(AppLanguage!)


/**
 App的Identifier表示
 该束的唯一标识字符串,该字符串的格式类似 com.yourcompany.yourapp,如果使⽤用模拟器跑你的应用,这个字段没有用处,如果你需要把你的应⽤部署到设备上,你必须⽣成一个证书,⽽而在⽣生成证书的时候,在apple的⽹网站上需要增加相应的app IDs.这⾥有一个字段Bundle identidier,如果这个Bundle identidier是一个完整字符串,那么文件中的这个字段必须和后者完全相同,如果app IDs中的字段含有通配符*,那么文件中的字符串必须符合后者的描述。
 */
let AppIdentifier = ApplicationInfoDictionary?["CFBundleIdentifier"]
print(AppIdentifier!)


/**
 App 的版本
 */
let AppVersion = ApplicationInfoDictionary?["CFBundleShortVersionString"]
print(AppVersion!)



/**
 App 的内部版本
 */
let AppInternalVersion = ApplicationInfoDictionary?["CFBundleVersion"]
print(AppInternalVersion!)



/**
 App 所支持的方向
 */
let AppSupportDirection = ApplicationInfoDictionary?["UISupportedInterfaceOrientations"]
print(AppSupportDirection!)



/**
 获取应用工程的名字
 */
let AppProjectName = ApplicationInfoDictionary?["CFBundleName"]
print(AppProjectName!)


/**
 获取应用支持的设备
 UIDeviceFamily 设置是一个字符串数组。每个字符串都定义受支持的设备。<string>1</string> 设置定义对 iPhone 和 iPod Touch 的支持。<string>2</string> 设置定义对 iPad 的支持。
 */
let AppSupportDevices = ApplicationInfoDictionary?["UIDeviceFamily"]
print(AppSupportDevices!)


/**
 应用安装包的名字
 */
let AppInstallationPackageName = ApplicationInfoDictionary?["CFBundleExecutable"]
print(AppInstallationPackageName!)


/**
 获取Info.plist 的版本
 */
let InfoPlistVersion = ApplicationInfoDictionary?["CFBundleInfoDictionaryVersion"]
print(InfoPlistVersion!)


三 、设备信息的获取

/**
 获取设备的一些信息
 */


// TODO : 设备系统的名字
let KDeviceSystemName = UIDevice.current.systemName
print(KDeviceSystemName)

// TODO : 获取系统的名字
let KDeviceSystemVersion = UIDevice.current.systemVersion
print(KDeviceSystemVersion)

// TODO : 获取设备的名字
let KDeviceName = UIDevice.current.name
print(KDeviceName)

// TODO : 获取设置的类型,是 @"iPhone" 还是 @"iPod touch"
let KDeviceType = UIDevice.current.model
print(KDeviceType)

// TODO : 设备区域化型号
let KDevicelocalizedNumber = UIDevice.current.localizedModel
print(KDevicelocalizedNumber)

// TODO : 获取设备的UUID
let KDeviceUUID = UIDevice.current.identifierForVendor
print(KDeviceUUID!)


//TODO : 获取设备的朝向
//MARK : 如果 KDeviceOrientation 等于 UIDeviceOrientationUnknown 说明设备朝向信息还没有确定。
let KDeviceOrientation = UIDevice.current.orientation
print(KDeviceOrientation)

// TODO : 是否生成设备的朝向信息
let isDeviceOrientationInfo = UIDevice.current.isGeneratingDeviceOrientationNotifications
print(isDeviceOrientationInfo)

// TODO : 开启设备的朝向通知
UIDevice.current.beginGeneratingDeviceOrientationNotifications()

// TODO : 结束设备朝向的通知
UIDevice.current.endGeneratingDeviceOrientationNotifications()

// TODO : 是否开启电池控制
let isBatteryMonitoring = UIDevice.current.isBatteryMonitoringEnabled
print(isBatteryMonitoring)

// TODO : 获取设备电池的状态
// MARK : KDeviceBatteryState = UIDeviceBatteryStateUnknown 说明设备电池不受控制
let KDeviceBatteryState = UIDevice.current.batteryState
print(KDeviceBatteryState)

// TODO : 获取用户电池百分比
let KDeviceBatteryLevel = UIDevice.current.batteryLevel
print(KDeviceBatteryLevel)


// TODO : 判断设备的接近传感器是否可用
let isProximityMonitoring = UIDevice.current.isProximityMonitoringEnabled
print(isProximityMonitoring)

// TODO : 人脸接近探测器的状态
// MARK : 如果设备没有安装探测器这个一直返回 False
let KDeviceProximityState = UIDevice.current.proximityState
print(KDeviceProximityState)


// TODO :获取设备是否支持多任务处理
let isMultitasking = UIDevice.current.isMultitaskingSupported
print(isMultitasking)


// TODO : 获取设备是那种类型的
// MARK : 返回值包含: unspecified 、 pad 、tv 、 carPlay
let KDeviceUserInterfaceIdiom = UIDevice.current.userInterfaceIdiom
print(KDeviceUserInterfaceIdiom)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容