2013-10-04 2 views
22

어쨌든 휴대 전화가있는 시간대/국가를 알려주시겠습니까? 나는 위치 서비스를 사용하지 않는 것을 선호한다.iPhone에서 시간대/국가 가져 오기

이 목적은 자동으로 전화를 라우팅하는 것입니다. 사용자가 미국에있는 경우 앱이 기본적으로 미국 기반 콜센터에 전화하기를 원합니다. 사용자가 다른 국가에있는 경우 콜센터를 기본값으로 사용하고 싶습니다.

감사합니다.

답변

57

을 애플이 제공을 통해 안전 좋은 방법은 이동하는 것입니다. 대륙에 대해서만 신경을 쓰는 것처럼 들리므로 필요한 모든 것일 수 있습니다.

추가 정보 : 공식 표준 시간대 데이터베이스는 http://www.iana.org/time-zones입니다. tzdata2013g.tar.gz (또는 최신 버전 tzdataYYYYx.tar.gz)을 다운로드하십시오. 예를 들어, 각 시간대의 위도/경도를 제공 zone.tab라는 이름의 그 아카이브 파일있다 :

CH  +4723+00832  Europe/Zurich 

+4723+00832를 나타냅니다 위도 = + 47º23 ", 경도 = + 8º23".

업데이트 : 일부 경우 (잘 모르겠어요있는)에서 시간대 이름은 zone.tab에없는 US/Pacific 같은 오래된 스타일의 이름이 될 수 있습니다. 이들을 처리하려면 backward이라는 파일을 가져와 이전 이름을 현재 이름으로 변환합니다.

zone.tab을 앱에서 사용할 수있는 것으로 변환하는 것은 귀하에게 달려 있습니다. 결과는 위치 서비스만큼 정확하지는 않지만 일반적인 아이디어를 제공합니다. 그러나 은 보장되지 않습니다. 몇 가지 상황에서 실패합니다.

  1. 사용자가 설정에서 시간대를 변경합니다. 대부분의 사용자는 전화기가 시간과 구역을 자동으로 설정하도록하지만 모든 사람이 자동으로 설정하지 않도록합니다. 사용자가 시간대를 변경하면 정확한 정보 대신 원하는 정보를 얻을 수 있습니다.

  2. 장치가 올바른 현지 시간대를 결정할 수 없습니다. 네트워크 문제로 인해 전화기가 시간과 구역을 정확하게 설정하지 못할 수 있습니다. 예를 들어, 사용자가 비행기로 여행하고 착륙 할 때 네트워크에 문제가있는 경우 전화기는 출발지 위치에서 여전히 시간대를 표시합니다.

+0

은 zone.tab을 사용하는 것보다 국가 코드로 변환하는 더 쉬운 방법이 있습니까? – Alan

+0

내가 아는 바는 아니지만 zone.tab은 이미 매우 사용하기 쉽습니다. –

1

업데이트 : 마지막 의견 다음에 내 대답이 변경됩니다.

휴대 전화의 IP를 역방향 조회하여 지리적 위치를 찾을 수 있습니다. several rest APIs available이 있습니다.

이렇게하면 애플이 귀하의 응용 프로그램을 거부 할 수 있으므로 권장하지 않습니다.

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

이름이 될 것입니다 무언가를 Australia/Sydney, 또는 Europe/Zurich, 또는 America/Denver 같은 : 당신은 사용하여 로컬 타임 존의 이름을 얻을 수 있습니다 location services

+0

이 사용자가 자신의 장치를 설정 한 로케일을 줄 것으로 보인다.그리스 파르 폰이 미국을 여행한다면 그리스어 – AlexWien

+0

을 전달할 것입니다. 합의 된 @AlexWien –

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

    or 

    NSTimeZone *timeZoneLocal = [NSTimeZone defaultTimeZone]; 
    NSString *strTimeZoneName = [timeZoneLocal name]; 
관련 문제