2011-02-18 5 views
8

사용자가이 앱을 사용하여 특정 이벤트를 기록하는 위치 기반 앱을 만들고 있습니다.올바른 날짜/시간 보장

이벤트 데이터의 중요한 부분은 이벤트가 발생한 때입니다. 사용자가 온라인 상태 일 때도 문제가되지 않지만 사용자가 나중에 오프라인 상태 일 때도 지원합니다 (이벤트 동기화 후 & 기억).

사용자가 오프라인 상태 일 때 전화기에서 시간을 변경하여 이벤트 시간이 잘못 기록되는 상황이있을 수 있습니다.

그렇다면 기기가 오프라인 상태 일 수 있으므로 사용자 행동과 관계없이 정확한 시간을 확보하는 가장 좋은 방법은 무엇입니까? 몇 가지 아이디어 :

  1. GPS 시간. 그것을 취득 할 수 있습니까?
  2. 사용자가 추적 시스템 시간을 변경 했습니까?
  3. 다른 아이디어가 있습니까?

참고 : 시간에는 초 단위의 정확도가 필요하며 대략 분 단위의 정확도는 괜찮습니다.

Note2 : 우리는 Android 및 iPhone 용 모바일 앱을 개발 중이므로 일반 솔루션 및 해당 두 플랫폼 중 특정 솔루션에 관심이 있습니다.

+0

나는 GSM 네트워크가 현재 시간을 제공 할 수 있고 많은 것을 할 수 있다고 생각한다. 따라서 핸드셋이 네트워크에 있으면 그 시간과 동기화되어야합니다. –

+0

이것은 기기가 온라인 일 때 별다른 문제가 아닙니다. 이벤트가 전송되면 Google 서버에서 시간을 확인할 수 있습니다. 기기가 오프라인 일 때만 문제가 발생합니다. –

+0

Peter -이 남용 의견을 남용해서 죄송합니다. 그러나 연락 할 수있는 다른 방법을 찾을 수 없습니다. SO 사용자 데이터 분석과 관련하여 블로그 항목에 의견을 게시 할 수 없습니다. 게시 및 미리보기는 모두 페이지를 다시로드하기 만하면됩니다. blogspot 용 쿠키가 있습니다. google.com 계정이 있습니다. 쿠키는 일부 추가 제 3 도메인에서도 필요하지만 알 수있는 방법은 없습니다. 코멘트가 여기에 있습니다. http://slashdot.org/comments.pl?sid=2328930&cid=36789036 –

답변

2

저는 개인적으로이 시나리오에 대해 많은 걱정을하지 않습니다. 시간이 지남에 따라 안드로이드에서 시간을 의도적으로 변경하는 (누군가 하루 종일 주기적으로 시간 서버에 자동으로 동기화하는) 사람의 선호도는 저에게 낮습니다. 즉,이를 보상 할 수있는 유일한 방법은 위치 데이터를 오프라인으로 기록한 이후로 경과 된 초의 실행 기록을 백그라운드에서 유지하는 서비스를 실행하는 것입니다. 서버에 업로드되면 경과 된 초를 사용하여 현재 UTC 시간에서 시간 오프셋을 계산할 수 있습니다. 통과하기에는 끔찍한 일이지만 작동 할 것입니다.

GPS 시간은 흥미로운 아이디어이지만 Android 사용자는 SDK 사용자가 모의 위치를 ​​기기에 보낼 수 있습니다. 나는 당신이 안정적으로 시스템 시간에 대한 변화를 추적 할 수 있을지 확신하지 못한다. 그리고 현재의 상황을 맥락으로 생각하지 않고 사실을 포착 할 수 있다고해도 말이다.

+0

글쎄,이 애플 리케이션을 사용하는 회사는 직원들이 현장에서 작업 할 때, 작업을 시작하거나 일하는 것을 중단 할 것을 요구합니다. 그래서 인센티브가 있습니다. 직원들로부터 조정할 수 있습니다. 특히 허점이 발견되면. –

+0

모의 GPS 위치를 만드는 좋은 점. 이것이 발견 될 수 있는지 확인합니다. –

+0

예, 사기가 그런 상황에서 매우 민감 할 수 있음을 알 수 있습니다. 내 시나리오에서는 백그라운드 서비스를 죽이는 것이 여전히 가능하다고 생각해보십시오. 주기적으로 해당 오프셋 데이터를 장치 저장소에 저장하고 자동으로 서비스를 다시 시작함으로써 그 영향을 최소화 할 수 있는지 확실하지 않습니다. 고려해야 할 것이 많이있는 것처럼 들립니다. –

1

우리는 비슷한 이유로 애플 리케이션에서 GPS 시간을 사용합니다. 사용자가 다른 시간대에 있고 현지 시간이 필요하기 때문에 설치 시간에 어떤 표준 시간대를 서버에서 정의합니다 (너무 멀리 이동하지는 않습니다). 모의 GPS 위치는 생각하지 않았지만 그렇게하기 위해서는 상당히 고급 사용자 여야합니다.