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