2011-12-21 63 views
1

我有一個Android應用程序,這是一個「鏈接」雜誌網站。如何使用Android應用程序檢測新版本的網站?

該應用程序的activity將是雜誌網站本身。

我做了一個widget它,我運行一個service作爲唯一目的:檢測新雜誌是否在線。當服務檢測到它時,會更改widget icon

現在我的疑問是如何檢測新雜誌。我正在考慮每6小時從網站上下載一個文件,並比較最後一本雜誌的版本(我可以從0開始,作爲應用程序的本地變量,並與下載文檔提供的編號進行比較)。


有沒有更好的方法來做到這一點?

回答

1

這取決於你認爲是什麼「變化」。假設您想檢測到任何更改,請下載雜誌主頁/其他文件,並對其執行MD5或類似的散列。存儲散列。

下一次你做下載,你再次散列它然後比較散列。如果哈希值相同,則頁面不變。散列的好處是減少了存儲需求 - 您只需要保存少量字節,而不是整個文檔。

然而,請注意,大多數頁面並非靜態 - 想象一個頁面的角落裏有時鐘或任何動態內容 - 在這種情況下,您的頁面總是顯得不同。

對於一些運行良好的網站和服務器,您可以查看HTTP標頭以獲取有關何時將頁面創建/修改/設置爲過期的信息。這不會被所有人提供,有時可能只是明顯的錯誤。

理想的解決方案是找到一個特定的頁面(或頁面的一部分),每次新問題都會發生一次變化 - 然後您可以繼續檢查那一件事情。一個例子可能是一個鏈接,它總是指向最新的問題,或者主圖像的URL隨每個問題而變化。

當然,如果雜誌願意幫助,他們可以從一個簡單的文件,只是裏面全WebService的問題數暴露出許多方面的信息給你。

編輯:假設你的控制下多個雜誌,我建議你有一個返回在容易解析的格式(JSON,XML)的每個雜誌的最新問題列表的單個頁面。如果問題不頻繁/非常手動的過程,此列表可能是靜態的 - 在這種情況下,請手動編輯它。更好的辦法是使用一個簡單的數據庫表來讀取列表 - 這樣你就可以擁有一個很好的用戶界面來更新它,並允許其他人維護它,而不必讓他們訪問服務器文件系統。

我還建議您爲每本雜誌和該雜誌的每期雜誌分配一個真正獨特的ID /密鑰 - 以便將來您可以添加其他功能,如本地下載用於離線閱讀/同步回覆問題。

+0

我可以控制網站上的文件。所以我可以告訴他們把一份只有最後一本雜誌版本號的文件。下載該文件並將其中的值與我上次看到的版本進行比較。我只是想看看這是不是一個好的選擇。 – 2011-12-21 17:19:58

+1

我沒有意識到這些網站在你的控制之下。我會用更好的解決方案更新我的答案。我假設你支持多種雜誌? – Basic 2011-12-21 17:34:39

相關問題