某單位人事資訊查詢APP自動升級解決方案
1 需求和目標
1.1 使用者需求
APP在登入時,自動檢測新版本,如果有新版本則提示升級。如果不升級則退出應用。
1.2 設計目標
通用的自動升級解決方案,可以推廣到其他專案中。
2 升級現狀
應用升級時,需要把打包好的APK拷貝到目標終端,然後安裝升級。由此帶來兩點問題,一是新版本升級對使用者體驗不好;二是增加了實施工作。
3 需求分析
從使用者的角度出發,分析功能需求,強制升級法,自動升級包括以下步驟:
1. 使用者開啟應用,進入登入頁面;
2. 登入頁面載入完成後,檢測當前版本是否為最新版本;
a) 如果是最新版本,結束(升級流程);
b) 如果不是最新版本,提示使用者升級;
i. 如果使用者選擇升級,則開始下載應用,下載完成後安裝升級包,完成升級流程;
ii. 如果使用者選擇不升級,則退出應用。
4 方案設計
從系統角度出發,結合使用者需求,設計系統應具備的功能。
4.1 應用端
應用端功能設計,主要功能有:
1. 檢測新版本;
2. 獲取當前版本;
3. 獲取新版本下載地址;
4. 新版本下載;
5. 更新邏輯控制;
6. 記錄使用者更新歷史
4.2 服務端
服務端功能設計,因為是使用WebService提供服務,所以介面至少應涵蓋應用端的呼叫需求,主要介面應包括的功能有:
1. 檢測新版本;
2. 獲取新版本下載地址;
3. 應用更新記錄(記錄誰在什麼時間獲取了哪個版本);
4. 版本下載次數計算
4.3 資料庫
資料庫設計,只設計表結構,不涉及具體的資料庫軟體,便於擴充到其他資料庫,當前為SQL Server
APP表:管理多個APP的基本資訊
欄位 |
說明 |
備註 |
ID |
自動編號 |
|
Name |
應用名稱 |
|
Mark |
應用標識 |
|
Logo |
圖示 |
|
Introduce |
介紹 |
APP_Version表:管理每個APP的版本
欄位 |
說明 |
備註 |
ID |
自動編號 |
|
Mark |
應用標識 |
|
Version |
版本號 |
|
ServerPath |
下載路徑 |
|
IsLastest |
最新版本標識 |
|
ReleaseTime |
釋出時間 |
|
CRT |
下載次數(點選率) |
在APP點選日誌表上增加觸發器,自動計算CRT,或者用程式實現 |
APP_ChangeLog表:記錄使用者更新的歷史資訊
欄位 |
說明 |
備註 |
ID |
自動編號 |
|
UID |
使用者標識 |
|
Mark |
應用標識 |
記錄使用者獲取的應用 |
Version |
版本 |
記錄使用者獲取的應用版本 |
FetchTime |
獲取時間 |
記錄使用者獲取應用的時間 |
5 實現
5.1 應用端
關鍵程式碼:
獲取當前應用版本號
appcan.widgetOne.getCurrentWidgetInfo(function(err, data,dataType, opId) {
if (err) {
//獲取當前版本號失敗
//appcan.window.alert("獲取當前版本號失敗");
} else {
//成功後,用當前版本號處理一些事情
var currentVersion = JSON.parse(data);
var currentVersionNo = currentVersion.version;
//appcan.window.alert("當前版本號:" + currentVersionNo);
}
下載遠端檔案
uexWindow.open('dd', '0', serverUrl, 0, 1,1, 0, 500);
5.2 服務端
IIS配置
在IIS的MIME型別中,配置增加.apk副檔名,以便支援.apk格式檔案的下載
副檔名 |
MIME型別 |
.apk |
application/vnd.android.package-archive |
主要方法
///<summary>
///根據應用標識獲取最新版本資訊
///</summary>
publicvoid GetLastestVersion(string Mark);
///<summary>
///記錄使用者更新歷史
///</summary>
publicvoid RecordUpdateHistory(string UID, string Mark, string Version);