2010-05-10 3 views
1

기본적으로 응용 프로그램 시작시 사용자 국가를 식별하고 해당 국가의 응용 프로그램에서 위치 기반 기능을 사용하거나 사용하지 않도록 설정해야합니다. RootViewController를로드하기 전에 응용 프로그램 대리자에서 가능한 한 빨리이 작업을 수행해야합니다. iPhone SDK에서이 작업을 수행 할 수 있습니까?사용자 국가 정보를 얻는 방법

+0

"사용자 국가"의 정의는 무엇입니까? 지도상의 현재 위치는? 무선 청구서의 우편 주소? –

답변

0

앱이 실행되는 동안 기기가 실제로 위치한 국가의 이름이 필요합니까?

또는 en_US 또는 fr_CA와 같이 장치에서 사용하는 시스템 로캘을 사용 할 수 있습니까?

후자의 경우에, 당신은 할 수 있습니다

NSLocale *currentUsersLocale = [NSLocale currentLocale]; 
NSString *currentLocaleID = [currentUsersLocale localeIdentifier];` 

그런 다음 currentLocaleID"en_US" 또는 "fr_CA" 또는 유사합니다.

그렇지 않으면 CoreLocation 및 일부 형식의 역 지오 코더를 사용하여 위도/경도를 국가 이름으로 변환해야합니다.

MKReverseGeocoder는이 작업을 수행 할 수 있지만 서비스 약관에 따르면 사용자에게 적합하지 않은 Google지도와 함께해야한다고 말합니다. OS 3.0 이상에서만 사용 가능하며 자세한 내용은 MKReverseGeocoder 설명서를 검색하십시오.

필자 자신이 필요로했으며, 서버의 PHP에서 장치 IP 주소를 사용하여 지오 코딩을 수행했습니다. 그것은 초보적이지만, 우리에게 필요한만큼의 세부 사항을주었습니다.

이 웹 서비스를 확인하십시오 : http://ws.geonames.org/findNearby?lat=47.3&lng=9
위도/경도 쌍이 지정된 국가 및 인근 장소 이름이있는 XML 문서를 반환합니다.

이러한 접근 방식은 활성 데이터 연결이있는 장치에 의존합니다.

+1

안타깝게도 앱이 실행되는 동안 기기가있는 국가가 필요하므로 로케일이 충분하지 않습니다. 나는 MKReverseGeocoder API의 한계에 대해 읽었고 그 때문에 나는 대안을 찾고 있었다. 나는 국가 정보를 얻기 위해 사용자로부터 숨겨진 배경에지도를로드하면 애플이 앱을 거부 할 수도 있다고 생각한다. – ender

+0

내 대답에 다른 링크를 추가 할 수 없지만 체크 아웃 : http://ws.geonames.org/findNearby?lat=47.3&lng=9 위도가 지정된 국가/인근 장소 이름이있는 XML 문서를 반환합니다/쌍. – hjd

+0

thanx hjd, 체크 아웃하겠습니다. 외부 리소스에 의존하는 것을 피하기는하지만 완전히 새로운 시나리오/문제 세트를 제공하기 때문에이 리소스를 사용하지 않는 것이 좋습니다. – ender