2011-12-21 4 views
1

나는 잡지 웹 사이트에 대한 "링크"인 안드로이드 응용 프로그램을 가지고 있습니다.Android 애플리케이션을 사용하여 웹 사이트의 새 버전을 감지하는 방법은 무엇입니까?

응용 프로그램의 activity은 잡지 웹 사이트 자체입니다.

나는 widget을 만들었고 service을 실행하는 것이 유일한 목적은 새로운 잡지가 온라인 상태 일 때를 감지하는 것입니다. 서비스가 감지하면 widget icon이 변경됩니다.

이제 어떻게하면 새로운 잡지를 검색 할 수 있을지 의심 스럽습니다. 웹 사이트에서 6 시간마다 파일을 다운로드하고 마지막 잡지의 버전을 비교하려고합니다 (응용 프로그램의 로컬 변수로 0부터 시작하여 다운로드 한 문서의 번호와 비교할 수 있음).


더 좋은 방법이 있습니까?

답변

1

"변경"이라고 생각하는 것에 따라 다릅니다. 변경 사항을 감지하려고한다고 가정하면 잡지 홈페이지/다른 파일을 다운로드하고 MD5 또는 이와 유사한 해시를 수행하십시오. 해시를 저장하십시오.

다음에 다운로드 할 때 다시 해시 한 다음 해시를 비교합니다. 해시가 동일하면 페이지가 변경되지 않습니다. 해시의 이점은 저장 공간 요구 사항이 줄어들 기 때문에 전체 문서가 아닌 몇 개의 바이트 만 저장하면됩니다.

그러나 대부분의 페이지는 정적이 아닙니다. 시계가 모서리에있는 페이지를 상상하거나 동적 콘텐츠 인 동적 콘텐츠 -이 시나리오에서는 페이지가 항상 다른 것으로 보입니다.

잘 실행되는 사이트 및 서버의 경우 HTTP 헤더를보고 페이지 작성/수정/만료 기간에 대한 정보를 얻을 수 있습니다. 이것은 모든 사람이 제공하지 않으며 때로는 명백히 잘못 될 수 있습니다.

이상적인 해결 방법은 새로운 문제가있을 때마다 한 번 변경 될 특정 페이지 (또는 페이지의 일부)를 찾는 것입니다. 그런 다음 한 가지만 계속 확인할 수 있습니다. 예를 들어 최신 이슈를 항상 가리키는 링크 또는 각 이슈와 함께 변경되는 주 이미지의 URL 일 수 있습니다.

물론 잡지가 기꺼이 도움이된다면, 문제 번호가 들어있는 간단한 파일에서부터 전체 웹 서비스에 이르기까지 여러 가지 방법으로 정보를 노출 할 수 있습니다.

편집 : 당신의 통제하에 여러 잡지 가정은, 난 당신이 쉽게 분석 할 수있는 형식 (JSON, XML)에 각 잡지의 최신 문제의 목록을 반환 한 페이지를 건의 할 것입니다. 이 목록은 문제가 드문 경우 정적 일 수 있지만 매우 수동적 인 프로세스 일 수 있습니다.이 경우 수작업으로 편집하십시오. 목록을 생성하기 위해 읽는 간단한 데이터베이스 테이블이 더 좋을 것입니다.이 방법을 사용하면 서버 UI를 업데이트하고 다른 사람이 서버 파일 시스템에 액세스하지 않고 유지 관리 할 수있는 좋은 UI를 가질 수 있습니다.

각 잡지와 각 잡지에 고유 한 ID/키를 할당하는 것이 좋습니다. 그러면 나중에 오프라인으로 읽기/다시 동기화하기 위해 로컬로 다운로드하는 것과 같은 다른 기능을 추가 할 수 있습니다.

+0

웹 사이트에서 문서를 제어 할 수 있습니다. 그래서 저는 그들에게 마지막 잡지의 버전/번호 만있는 문서를 넣으라고 말할 수 있습니다. 해당 문서를 다운로드하고 마지막으로 본 버전과 내부의 값을 비교하십시오. 나는 그저 좋은 선택인지보고 싶었습니다. –

+1

사이트가 귀하의 통제하에 있다는 것을 깨닫지 못했습니다. 내 대답을 더 나은 해결책으로 업데이트하겠습니다. 네가 여러 잡지를 지원한다고 가정하는거야? – Basic

관련 문제