2010-07-30 3 views
4

내 프로젝트 (웹 및 iPhone 기반 응용 프로그램)의 경우 관련 데이터를 표시 할 수 있도록 사용자의 시간대를 수집해야합니다. 내가 생각할 수있는 가능성 중 일부는 다음과 같습니다.사용자에게 명시 적으로 묻지 않고 사용자의 시간대를 수집하는 가장 좋은 방법은 무엇입니까?

1. 가져 오기 사용자의 IP를 사용하는 경우 (하지만 사용자가 프록시 서버를 사용하는 경우)
2. 요청 매개 변수를 사용하여 전송 (요청시 추가 매개 변수가 필요하거나 세션 당 한 번 수집 될 수 있음)
3. 쿠키를 통해 전달 (매개 변수 설정과 동일한 의미)
4. 등록시 수집하는 사용자의 우편 번호를 기반으로하지만 등록되지 않은 사용자의 경우 해당 앱을 탐색 할 수 있으므로 관련 항목을 볼 수 없습니다 데이터.

그래서 지금 생각할 수있는 각각의 접근 방식에는 하나 이상의 단점이 있습니다. 나는 다른 접근법이 무엇인지 알기를 원하며 사용자 경험이 영향을받지 않고 사용자가 명시 적으로 시간대에 대해 질문하지 않는 경우에 사용하는 것이 가장 좋습니다. 또한 접근 방식은 웹과 iPhone 모두에 적용되어야합니다. .

+0

단순한 '기능'을 복잡하게 만들지 말고 그냥 묻거나 선택 상자를 변경하면 어떨까요? –

+0

@ david 나는 사용자의 선입관을 단순하게 만들고 싶어서, 내가 작업하고있는 앱이 실시간 위치 기반 서비스이므로 위치를 변경할 때마다 시간대를 언급 할 필요가 없다. 그래서 나는 그것을 수집해야한다. 사용자에게 각 시간대를 선택하라는 메시지를 표시하지 않고 –

답변

0

자바 스크립트를 사용하여 사용자의 현재 시간을 수집하고 전체 세션 동안 지속될 첫 번째 요청을 통해 전송합니다.

편차 (± 15 분 정도)를 허용해야하지만이 방법으로 시간대를 꽤 안정적으로 결정할 수 있어야합니다.

다음으로 가장 좋은 것은 실제로 국가를 찾기 위해 지구 위치 서비스를 통해 사용자 IP를 실행하는 것입니다. 그러나이를 제대로 수행하려면 국가 간 시간대 맵을 유지해야하며 미국이나 러시아와 같이 여러 시간대가있는 국가에서는 문제가 발생할 수 있습니다.

+0

나는이 질문에 이미 언급 한 접근법에 대해서도 생각해 왔지만, 요점은 이것들이 클라이언트 측에서 여분의 처리를 요구한다는 것입니다. geolocation 서비스를 통해 IP를 실행하는 것 외에는 헤더가 첨부되어 있지만 확실하지 않습니다. 그러한 정보는 http 헤더에서 추출 될 수 있거나 HTTP 요청 헤더에서 그런 정보를 본 적이 없기 때문에 실제로 존재합니다. –

+0

@Hitesh 사용자의 시간대를 지정하는 HTTP 헤더가 있다고 생각하지 않습니다. 현재 시간을 Ajax 호출로 가져 오는 것은 그렇게 어렵지는 않습니다. –

+0

덕분에 아약스 호출 방식을 고수 할 것 같네요. –

0

저는 iPhone 개발에 대해 많이 모릅니다. API에 사용자의 기본 설정이나 심지어 현재 표시된 시간에 액세스 할 수있는 기능이있을 수 있습니다.

일반적으로 웹은 this question에 광범위하게 적용됩니다.

0

웹용으로는 사용자의 브라우저에서 가져올 수 있어야합니다. iPhone의 경우 API가 있다고 생각합니다. 적어도 ISTR을 사용하면 시간대를 변경할 때 iPhone이 올바른 현지 시간을 표시합니다 (로컬 셀 타워에 연결될 때이 정보를 가져 오는 것으로 상상합니다).

1

JavaScript를 사용하면 new Date().getTimezoneOffset()을 사용할 수 있습니다 (도움이 될 경우). MDC에 따르면, 그건 분 오프셋을 얻을거야 ... 내 경우에는 (핀란드), -180.

2

시간대 가져 오는 중 iPhone SDK의 경우 ... 필요한 것을 얻고 일광 절약 시간제로 조정합니다.

NSTimeZone *systimeZone = [NSTimeZone systemTimeZone]; 
NSString *timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortStandard locale:currentLocale]; 
if([systimeZone isDaylightSavingTimeForDate:[NSDate date]]){ 
    timeZoneString = [systimeZone localizedName:NSTimeZoneNameStyleShortDaylightSaving locale:currentLocale]; 
} 

apple docs에 TimeZone 개체에 대한 유용한 정보가 있습니다.

관련 문제