教程說明
使用工具: iOS SDK
執行難度: 普通
操作時間: 15 到30分鐘
裝置資料的重要性
首先要明確一個問題:為什麼我們需要訪問裝置資料?
如果在使用中遇到問題,行動裝置 App使用者往往會通過電子郵件將自己的遭遇或者求助資訊發送給開發人員。在這種情況下,郵件內容越翔實、資訊量越大、對於裝置及系統內容的描述越具體,開發人員也就越容易給出科學的處理方案。舉例來說,如果大家的應用程式需要接入互連網方能運行,而使用者在徒步旅行途中發來郵件稱應用無法正常工作,那麼結論就變得非常清晰:使用者無法通過熱點接入互連網,因此應用沒能順利啟動。另外,瞭解使用者使用的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);
在上述代碼執行個體中,每一條資訊都被打包成字串,這樣便於直接顯示在控制台上。在執行個體應用中,大家可能希望這些資訊以標題或常值內容的形式顯示在反饋郵件中。
總結
在與應用程式使用者的交流當中,開發人員掌握的裝置資訊越多、越具體,提出解決方案也就變得越容易。使用者的技術水平參差不齊,因此常常難以準確表述自己所遇到的麻煩。通過詳細瞭解他們的裝置狀況,開發人員能夠更好地協助他們解決問題,借而為使用者提供更好的服務與產品使用樂趣。除了文章開頭所談到的理由,事實上訪問裝置資料也能協助我們更好地協調同一套系統內容下多款應用之間的相互作用。大家有什麼問題或者建議,不妨在評論欄中與其他讀者朋友分享。
原文連結:
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-accessing-device-data-with-uidevice-and-nslocale/
- 升級iOS SDK後如何建立已有項目
- Xcode4 IOS SDK 4.3安裝初體驗教程
- 詳解IOS SDK相容性引導
- 用jQM、HTML5和iOS
SDK構建MusicBrainz應用程式