iOS SDK使用指南:利用UIDevice及NSLocale訪問設(shè)備數(shù)據(jù)
譯文教程說明
-
使用工具: iOS SDK
-
執(zhí)行難度: 普通
-
操作時(shí)間: 15 到30分鐘
設(shè)備數(shù)據(jù)的重要性
首先要明確一個(gè)問題:為什么我們需要訪問設(shè)備數(shù)據(jù)?
如果在使用中遇到問題,移動(dòng)應(yīng)用用戶往往會(huì)通過電子郵件將自己的遭遇或者求助信息發(fā)送給開發(fā)人員。在這種情況下,郵件內(nèi)容越翔實(shí)、信息量越大、對(duì)于設(shè)備及系統(tǒng)環(huán)境的描述越具體,開發(fā)人員也就越容易給出科學(xué)的處理方案。舉例來說,如果大家的應(yīng)用程序需要接入互聯(lián)網(wǎng)方能運(yùn)行,而用戶在徒步旅行途中發(fā)來郵件稱應(yīng)用無法正常工作,那么結(jié)論就變得非常清晰:用戶無法通過熱點(diǎn)接入互聯(lián)網(wǎng),因此應(yīng)用沒能順利啟動(dòng)。另外,了解用戶使用的iOS版本、應(yīng)用程序版本以及國(guó)家、語言設(shè)定也很有幫助,這能讓開發(fā)人員很快弄清使用者的設(shè)備狀況,進(jìn)而簡(jiǎn)化應(yīng)用問題的診斷流程。
除了前面提到的bug診斷與問題追蹤,通過UIDevice或者NSLocale訪問信息還能有效改善應(yīng)用程序的界面(例如根據(jù)用戶所在地自動(dòng)設(shè)定不同風(fēng)格的界面)外觀及實(shí)際表現(xiàn)。
了解UIDevice 類
大家與UIDevice類的初次會(huì)面可能來自移動(dòng)設(shè)備的定向功能,不過除此之外,UIDevice還提供了多種其它屬性、類函數(shù)及通告模式,幫助我們?nèi)轿涣私庠O(shè)備狀況。從檢測(cè)電池電量到定位設(shè)備與用戶面部的距離,UIDevice所做的工作就是為應(yīng)用程序提供用戶及設(shè)備的一切信息。UIDevice類還能夠收集關(guān)于設(shè)備的各種具體細(xì)節(jié),例如機(jī)型及iOS版本等。在接下來的教程中,大家會(huì)發(fā)現(xiàn)其中大部分屬性都對(duì)開發(fā)工作具有積極的輔助作用。
了解 NSLocale 類
NSLocale類幫助我們的應(yīng)用根據(jù)用戶所在地的文化與語言習(xí)慣提供最令人滿意的服務(wù)效果。通過及時(shí)調(diào)整貨幣類型、小數(shù)點(diǎn)分隔符、時(shí)間及日期格式等,應(yīng)用程序能夠?yàn)橛脩魩沓鲱A(yù)期的智能工作效果,而這一切都是成功軟件必須考慮的人文因素。另外,NSLocale還能夠用于用戶所在的地理位置,當(dāng)用戶聯(lián)系開發(fā)者尋求幫助時(shí),所在地也是很重要的支持信息之一。
獲取設(shè)備信息
我們先從獲取設(shè)備機(jī)型(檢測(cè)iPhone、iPodTouch及iPad)與iOS版本入手。下列代碼可通過UIDevice獲取到設(shè)備的具體型號(hào)。
- UIDevice *currentDevice = [UIDevice currentDevice];
- NSString *model = [currentDevice model];
- NSString *systemVersion = [currentDevice systemVersion];
在***行中,UIDevice會(huì)返回用戶設(shè)備的實(shí)時(shí)運(yùn)行狀態(tài)實(shí)例。以此為基礎(chǔ),我們能夠訪問機(jī)型及系統(tǒng)版本等屬性信息,進(jìn)而掌握這類最關(guān)鍵的設(shè)備數(shù)據(jù)。
獲取用戶語言種類
接下來,我們嘗試檢索用戶的語言種類及所在地設(shè)置信息。
- NSArray *languageArray = [NSLocale preferredLanguages];
- NSString *language = [languageArray objectAtIndex:0];
- NSLocale *locale = [NSLocale currentLocale];
- NSString *country = [locale localeIdentifier];
想獲得用戶的***語言,我們需要使用NSLocale中的prefferedLanguages類函數(shù),它能夠返回用戶當(dāng)前語言設(shè)定中的信息。而用戶的當(dāng)前位置或者所在國(guó)家、地區(qū)信息則通過NSLocale對(duì)象獲取。在實(shí)例中,類函數(shù)localeIdentifier會(huì)返回一條特定代碼,其中包含用戶所在國(guó)家/地區(qū)信息。
獲取應(yīng)用程序版本信息
***,讓我們看看用戶正在使用的應(yīng)用程序是哪個(gè)版本。
- NSString *appVersion = [[NSBundle mainBundle]
- objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
應(yīng)用程序中的info.plist文件保存著當(dāng)前應(yīng)用版本信息,只要利用kCFBundleVersionKey對(duì)mainBundle進(jìn)行訪問,即可返回正確的應(yīng)用程序版本結(jié)果。
記錄設(shè)備數(shù)據(jù)
接下來,我們要將收集到的設(shè)備數(shù)據(jù)匯總并記錄。
- NSString *deviceSpecs =
- [NSString stringWithFormat:@"%@ - %@ - %@ - %@ - %@",
- model, systemVersion, language, country, appVersion];
- NSLog(@"Device Specs --> %@",deviceSpecs);
在上述代碼實(shí)例中,每一條信息都被打包成字符串,這樣便于直接顯示在控制臺(tái)上。在實(shí)例應(yīng)用中,大家可能希望這些信息以標(biāo)題或文本內(nèi)容的形式顯示在反饋郵件中。
總結(jié)
在與應(yīng)用程序用戶的交流當(dāng)中,開發(fā)人員掌握的設(shè)備信息越多、越具體,提出解決方案也就變得越容易。用戶的技術(shù)水平參差不齊,因此常常難以準(zhǔn)確表述自己所遇到的麻煩。通過詳細(xì)了解他們的設(shè)備狀況,開發(fā)人員能夠更好地幫助他們解決問題,借而為用戶提供更好的服務(wù)與產(chǎn)品使用樂趣。除了文章開頭所談到的理由,事實(shí)上訪問設(shè)備數(shù)據(jù)也能幫助我們更好地協(xié)調(diào)同一套系統(tǒng)環(huán)境下多款應(yīng)用之間的相互作用。大家有什么問題或者建議,不妨在評(píng)論欄中與其他讀者朋友分享。
原文鏈接: