Подтвердить что ты не робот

Получить часовую зону/страну с iPhone

Есть ли какой-либо момент, чтобы указать, в каком часовом поясе/стране находится телефон? Я бы предпочел не использовать службы определения местоположения.

Целью этого является автоматический маршрут вызовов. Если пользователь находится в США, я хочу, чтобы приложение по умолчанию вызывало телефонный центр США. Если пользователь находится в другой стране, я хочу, чтобы он был по умолчанию в своем call-центре.

Спасибо!

4b9b3361

Ответ 1

Вы можете получить имя локального часового пояса, используя:

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];

Название будет выглядеть как Australia/Sydney, или Europe/Zurich, или America/Denver. Поскольку это звучит так, будто вам может быть только забота о континенте, это может быть все, что вам нужно.

Если вам нужно больше: получите официальную базу данных часовых поясов на http://www.iana.org/time-zones. Загрузите tzdata2013g.tar.gz (или что бы ни была последняя версия tzdataYYYYx.tar.gz, когда вы читаете это). Там файл в этом архиве с именем zone.tab, который дает lat/long для каждого часового пояса, например:

CH      +4723+00832     Europe/Zurich

+4723+00832 обозначает широту = + 47º23 ", долготу = + 8º23".

Обновить. В некоторых случаях (я не уверен, какой) имя часового пояса может быть именем более старого стиля, например US/Pacific, которое не указано в zone.tab. Чтобы обработать их, также получите файл с именем backward, который дает переводы старых имен в текущие имена.

Преобразование zone.tab в то, что может использовать ваше приложение, зависит от вас. Результаты будут нигде не столь точны, как услуги определения местоположения, но дадут общую идею. Но он не гарантирован. Он не сработает в двух ситуациях:

  • Пользователь меняет свой часовой пояс в настройках. Большинство пользователей позволяют своим телефонам устанавливать время и зону автоматически, но не все. Если пользователь изменяет свой часовой пояс, вы получите то, что захотите, а не то, что точно.

  • Устройство не может определить правильный локальный часовой пояс. Сетевые проблемы могут помешать телефону точно настроить время и зону. Например, если пользователь путешествует на самолете и имеет проблемы с сетью, когда они приземляются, телефон может по-прежнему отображать часовой пояс от места вылета.

Ответ 2

Обновление: я меняю свой ответ после последнего комментария.

Вы можете отменить поиск IP-адреса телефона, чтобы узнать местоположение геоданных. Есть несколько доступных API-интерфейсов для отдыха.

Говоря, что я не рекомендую это, так как это может привести к тому, что Apple отклонит ваше приложение. Безопасная ставка должна пройти через предоставленные Apple услуги определения местоположения

Ответ 3

    NSTimeZone *timeZoneLocal = [NSTimeZone localTimeZone];
    NSString *strTimeZoneName = [timeZoneLocal name];

    or

    NSTimeZone *timeZoneLocal = [NSTimeZone defaultTimeZone];
    NSString *strTimeZoneName = [timeZoneLocal name];