Статьи

iOS SDK: доступ к данным устройства с помощью UIDevice и NSLocale

В этом руководстве показано, как получить доступ к ключевому устройству iOS и информации о пользователе, такой как модель устройства, номер версии iOS, выбранный язык пользователя и т. Д. Эта информация может быть полезна при диагностике проблем приложения или при настройке пользовательских интерфейсов в вашем приложении


Итак, почему вы хотите получить доступ к данным устройства?

Пользователи приложений часто пишут разработчикам по электронной почте с отзывами или для получения помощи в случае возникновения проблем Может быть полезно получить больше информации об устройстве пользователя и среде, не спрашивая их. Например, если вашему приложению требуется подключение к Интернету, а пользователь с iPod touch отправляет электронное письмо с сообщением о том, что приложение не работает должным образом во время похода, вы можете быстро сделать вывод, что это, вероятно, связано с тем, что у пользователя не было доступа к Интернету. Кроме того, знание версии iOS, версии приложения, а также страны и языка пользователя дает вам еще больше информации о пользователе, его устройстве и о том, что может способствовать возникновению проблемы, с которой столкнулся пользователь.

В дополнение к описанному выше сценарию отслеживания ошибок и ошибок, доступ к информации из UIDevice или NSLocale может также оказаться полезным для настройки интерфейса или поведения вашего приложения.


Вы можете узнать класс UIDevice встречам с ориентацией устройства, но UIDevice предлагает множество свойств, методов и уведомлений, которые обеспечивают понимание устройства. От отслеживания уровня заряда батареи до определения близости устройства к лицу пользователя, цель UIDevice — предоставлять данные об устройстве пользователя. Класс UIDevice также предоставляет доступные свойства, относящиеся к идентификации особенностей устройства, таких как модель и версия iOS. Вы увидите некоторые из этих свойств в действии, когда мы войдем в учебник.


Класс NSLocale помогает вашему приложению соответствовать культурным и лингвистическим соглашениям региона пользователя. Предоставляя средства для настройки форматирования для таких вещей, как символы валют, десятичные разделители, время или дата, приложение будет функционировать так, как ожидает пользователь. Кроме того, NSLocale можно использовать, чтобы узнать, на какой язык настроен пользователь, — полезную информацию, когда пользователь отправляет вам электронное письмо за поддержкой.


Начнем с получения модели устройства (iPhone, iPod touch или iPad) и версии iOS. Следующий код предоставляет специфическую информацию об устройстве из UIDevice :

1
2
3
UIDevice *currentDevice = [UIDevice currentDevice];
NSString *model = [currentDevice model];
NSString *systemVersion = [currentDevice systemVersion];

В первой строке UIDevice возвращает экземпляр устройства в его текущем состоянии. Отсюда мы получаем доступ к свойствам модели и версии системы, чтобы получить модель устройства и версию системы.


Далее мы получаем сведения о настройках языка и региона пользователя.

1
2
3
4
NSArray *languageArray = [NSLocale preferredLanguages];
NSString *language = [languageArray objectAtIndex:0];
NSLocale *locale = [NSLocale currentLocale];
NSString *country = [locale localeIdentifier];

Основной язык пользователя может быть получен с помощью метода NSLocale preferredLanguages NSLocale , который возвращает текущую настройку языка пользователя. NSLocale пользователя или страна / регион могут быть получены из возвращенного объекта NSLocale . Метод экземпляра localeIdentifier возвращает определенный код, который представляет страну / регион пользователя.


Наконец, давайте выясним, какую версию приложения использует пользователь.

1
2
NSString *appVersion = [[NSBundle mainBundle]
                       objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

В файле info.plist приложения хранится информация о текущей версии приложения, и при доступе к mainBundle с помощью kCFBundleVersionKey возвращается версия приложения.


Далее мы будем регистрировать собранные данные.

1
2
3
4
5
NSString *deviceSpecs =
    [NSString stringWithFormat:@»%@ — %@ — %@ — %@ — %@»,
    model, systemVersion, language, country, appVersion];
 
NSLog(@»Device Specs —> %@»,deviceSpecs);

В этом примере каждый фрагмент информации упакован в строку для отображения в консоли. При практическом использовании вы можете захотеть отобразить его в строке темы или теле письма с отзывами.


При переписке с пользователями приложения лучше узнать больше об устройстве, если вам нужно предложить решения. Пользователям часто трудно сформулировать сценарий, с которым у них возникают проблемы. Зная больше об их устройстве, вы сможете лучше помочь им с их проблемой, в конечном итоге предоставляя лучший сервис и создавая более счастливых пользователей. Доступ к данным устройства также полезен для создания пользовательских взаимодействий в вашем приложении. Вопросы или комментарии? Оставьте их в разделе комментариев ниже или напишите мне в Twitter @aaron_crabtree .