?iOS的APP的應用開發的過程中,有時為了bug跟蹤或者獲取用反饋的需要自動收集用戶設備、系統信息、應用信息等等,這些信息方便開發者診斷問題,當然這些信息是用戶的非隱私信息,是通過開發api可以獲取到的。那么通過那些api可以獲取這些信息呢,iOS的SDK中提供了UIDevice,NSBundle,NSLocale。
? ? ? ?UIDevice提供了多種屬性、類函數及狀態通知,幫助我們全方位了解設備狀況。從檢測電池電量到定位設備與臨近感應,UIDevice所做的工作就是為應用程序提供用戶及設備的一些信息。UIDevice類還能夠收集關于設備的各種具體細節,例如機型及iOS版本等。其中大部分屬性都對開發工作具有積極的輔助作用。下面的代碼簡單的使用UIDevice獲取手機屬性。
在這里我還是要推薦下我自己建的iOS開發學習群:680565220,群里都是學ios開發的,如果你正在學習ios ,小編歡迎你加入,今天分享的這個案例已經上傳到群文件,大家都是軟件開發黨,不定期分享干貨(只有iOS軟件開發相關的),包括我自己整理的一份2018最新的iOS進階資料和高級開發教程
[cpp]?view plain?copy
//設備相關信息的獲取??
?NSString?*strName?=?[[UIDevice?currentDevice]?name];??
NSLog(@"設備名稱:%@",?strName);//e.g.?"My?iPhone"??
?NSString?*strId?=?[[UIDevice?currentDevice]?uniqueIdentifier];??
NSLog(@"設備唯一標識:%@",?strId);//UUID,5.0后不可用??
?NSString?*strSysName?=?[[UIDevice?currentDevice]?systemName];??
NSLog(@"系統名稱:%@",?strSysName);//?e.g.?@"iOS"??
?NSString?*strSysVersion?=?[[UIDevice?currentDevice]?systemVersion];??
NSLog(@"系統版本號:%@",?strSysVersion);//?e.g.?@"4.0"??
?NSString?*strModel?=?[[UIDevice?currentDevice]?model];??
NSLog(@"設備模式:%@",?strModel);//?e.g.?@"iPhone",?@"iPod?touch"??
?NSString?*strLocModel?=?[[UIDevice?currentDevice]?localizedModel];??
NSLog(@"本地設備模式:%@",?strLocModel);//?localized?version?of?model??
?bundle是一個目錄,其中包含了程序會使用到的資源. 這些資源包含了如圖像,聲音,編譯好的代碼,nib文件(用戶也會把bundle稱為plug-in). 對應bundle,cocoa提供了類NSBundle.一個應用程序看上去和其他文件沒有什么區別. 但是實際上它是一個包含了nib文件,編譯代碼,以及其他資源的目錄. 我們把這個目錄叫做程序的main bundle。通過這個路徑可以獲取到應用的信息,例如應用名、版本號等。
[cpp]?view plain?copy
//app應用相關信息的獲取??
????NSDictionary?*dicInfo?=?[[NSBundle?mainBundle]?infoDictionary];??
//????CFShow(dicInfo);??
NSString?*strAppName?=?[dicInfo?objectForKey:@"CFBundleDisplayName"];??
NSLog(@"App應用名稱:%@",?strAppName);??
NSString?*strAppVersion?=?[dicInfo?objectForKey:@"CFBundleShortVersionString"];??
NSLog(@"App應用版本:%@",?strAppVersion);??
NSString?*strAppBuild?=?[dicInfo?objectForKey:@"CFBundleVersion"];??
NSLog(@"App應用Build版本:%@",?strAppBuild);??
NSLocale可以獲取用戶的本地化信息設置,例如貨幣類型,國家,語言,數字,日期格式的格式化,提供正確的地理位置顯示等等。下面的代碼獲取機器當前語言和國家代碼。
[cpp]?view plain?copy
//Getting?the?User’s?Language??
???NSArray?*languageArray?=?[NSLocale?preferredLanguages];??
???NSString?*language?=?[languageArray?objectAtIndex:0];??
NSLog(@"語言:%@",?language);//en??
???NSLocale?*locale?=?[NSLocale?currentLocale];??
???NSString?*country?=?[locale?localeIdentifier];??
NSLog(@"國家:%@",?country);?//en_US??