我正在使用Phonegap,HTML5和Web服務創建移動應用程序。這將針對Android和iOS(Ipad和Iphone)設備。HTML5移動應用程序的版本控制方法
我需要使用什麼方法來版本化移動應用程序和服務?如果應用程序和Web服務都以1.0版本開頭,那麼
- 我是否應該爲它們同時安裝兩個新版本?
- 如果用戶忽略新版本並且未執行更新,是否需要維護舊版本的服務?
- 如果是(2),我會保留舊版本多久?
- 有沒有辦法強制用戶進行應用升級?
任何幫助表示讚賞。
我正在使用Phonegap,HTML5和Web服務創建移動應用程序。這將針對Android和iOS(Ipad和Iphone)設備。HTML5移動應用程序的版本控制方法
我需要使用什麼方法來版本化移動應用程序和服務?如果應用程序和Web服務都以1.0版本開頭,那麼
任何幫助表示讚賞。
不是一個真正的辦法強迫用戶的其他升級則包括檢查自己的服務器上的東西,看是否有可用的更新(如檢查sometype。這時候的清單文件)
我個人的經驗,JS文件是要在兩個平臺上保持儘可能多的代碼,因此您不必爲兩者都編寫代碼。而且你永遠無法擺脫舊版本的野性。但我通常在12個月後停止支持舊版本。
1)服務器和應用程序版本不一定要相同。事實上,他們應該獨立發展。 Semver就什麼時候碰撞版本號提供了一個很好的指導。
2,3)。理想情況下,您應該設計服務,使其處理優雅的舊版本。但是如果你真的不得不棄用一些功能,你是唯一可以決定什麼時候這樣做的人。
4)您可能會拒絕較舊的客戶端與您的服務器進行交互,但會向客戶端提供一條有意義的錯誤消息,指示用戶進行升級。
通過應用程序緩存,您的應用程序也可以脫機訪問,並且可以輕鬆創建新更新並強制用戶更新(如果他們在線)。
如果您使用此方法,則應該保持兩個平臺上的版本號一致。您將能夠通過此方法強制更新,因此維護舊版本用戶的需求將消失。要回答#3,我認爲在分析用戶羣並得出結論後,這取決於您。
在應用程序緩存中,所有資產都必須加載或將失敗,因此請注意您在緩存清單中聲明的內容。我建議只列出靜態資產。
瞭解更多關於HTML應用程序緩存:http://www.html5rocks.com/en/tutorials/appcache/beginner/
該解決方案是在前端,所以你將不得不使用JavaScript來管理版本和應用程序緩存。
爲了檢測JS應用程序下面的代碼塊將檢測新版本時,用戶加載應用程序:
window.addEventListener('load', function(e) {//NOTICE this only fires on page load, you can put this in a setInterval, if you'd like
if (window.applicationCache) { //Application cache is supported
window.applicationCache.addEventListener('updateready', function(e) {
//Listening for an updated cache
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
if (confirm('A new version of this site is available. Load it?')) {
//If user accepts new version of site, it will reload the site.
window.location.reload();
}
} else {
return;
}
}, false);
}
}, false);
它會簡單地問,如果用戶希望加載網站的新版本不過既然你想強制更新用戶,你可以修改這個樣子:
window.addEventListener('load', function(e) {//NOTICE this only fires on page load, you can put this in a setInterval, if you'd like
if (window.applicationCache) { //Application cache is supported
window.applicationCache.addEventListener('updateready', function(e) {
//Listening for an updated cache
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
//Force update a user when a new version becomes available
window.location.reload();
}, false);
}
}, false);
任何在您的應用程序緩存清單將創建應用程序的新版本的變化,例如,如果您的清單是這樣的:
CACHE MANIFEST
#Version 1.0
game.html
assets/css/style.css
NETWORK
*
...並且將其更改爲:
CACHE MANIFEST
#Version 1.0
#I love cupcakes and candy
game.html
assets/css/style.css
NETWORK
*
你會自動創建應用程序的新版本。
據我所知,這將是一個很好的解決方案來解決您的問題,但我確實聽到有一些工作要做,以使其在Android上工作(下面的鏈接)。
PhoneGap的應用程序緩存教程:http://tmkmobile.wordpress.com/2012/03/04/html5-offline-solution/
1)如果我有在同一時間對他們倆的新版本?
不是。每個平臺都應該有它自己的版本號。如果你有一個只發生在iOS上的錯誤呢?你會碰到Android版本嗎?聽起來不太好。我發現非常有用的是爲每個版本和每個平臺保留一個簡單的日期圖表,並對其進行重點更改。
2)如果用戶忽略新版本並且沒有進行更新,是否需要維護舊版本的服務?
你應該提前計劃,避免「突變」,所以如果用戶有一箇舊版本,它仍然會工作。有時你無法避免它,你需要棄用一些東西,但是你應該保留它們。
3)如果對於(2)是,我會保留舊版本多久?
如果您絕對有重大變化,請保留舊版本,直到您確定大多數用戶在刪除時不會受到影響。一再警告他們正在使用的版本會很快停止工作,他們應該進行升級。
4)有沒有辦法強制用戶進行應用升級?
在你的api調用中發送客戶端版本號,根據這個數字你可以做任何你喜歡的事情。您可以發送一條消息告訴用戶,除非他們進行更新,否則他們不能繼續前進。
要展開第4點,您應該始終將未來的錯誤消息功能構建到將要發佈的早期版本的軟件中。所有使用案例和測試案例都不可能事先知道,因此在這些情況發生時有一個回退。如果使用服務嘗試從那裏獲取錯誤消息,但在應用中還有一條回退錯誤消息,指示用戶使用舊版本進行升級。 – 2013-06-18 15:10:54
類似[HTTP API的問題詳細信息](http://tools.ietf.org/html/draft-nottingham-http-problem)非常適合面向未來的錯誤消息傳遞能力。 – 2013-06-18 15:40:37