自我更新?為什麼需要?如果上架 Google Play 後,這部分不是就交給 Google Play 的機制了嗎?是的,這部分沒錯,但是如果沒有要上架 Google Play 的話呢?為啥不上架 Google Play 可能有千萬個理由,包含「不想被 Google A 走 25 美金」、「公司內部使用,不需要上架」等等。這時候更新的機制,就必須要自己來處理了,總不會希望你的使用者,每次都要透過 USB 傳輸線才能更新 App 吧...這樣使用者體驗不太優喔...
在開始之前,我們先參照前人的分享
Android应用开发笔记(12):Android应用的自动升级、更新模块的实现
這個分享已經把實做跟想法流程講的粉清楚了,差別只是這個是用 Java 寫的,而我們....ㄣ...是 Delphi,無法直接套用。不過想法與流程是可以參考的,接下來我們就要用 Delphi 來一步一步實現它,首先就是版別判斷的部分
在 Windows 的時代,執行檔或是 DLL 就有版號,應該沒忘記這件事吧?
對照到 Delphi Project 的部分,則在 Project Options 中的 Version Info 中可以指定
那麼在 Android 的環境呢?同樣也有類似的設定,而且這個設定值跟上架 Google Play 後,客戶端能否判斷有新版本有直接關係,該設定也在 Porject Options 中,如下
那麼該如何讀出版本資訊呢?當然你可也可以直接在 App 中埋一個固定的數值來代表版本,然後每次發佈前變更該數值,不過我們在這邊還是正規一點,要利用跟上述參照 blog 類似的方式,讀出 apk 的版本資訊,我們先看一下 Java 的作法
完全沒頭緒?一頭霧水、不知如何下手!沒關係,我也跟您一樣,對 Java 一竅不通,不過好在 Delphi 已經封裝了部分 Java Class 供我們使用,所以你可以寫成這樣
執行結果如下
至於 Server 端版號的部分,你可以以任何方式撰寫,如果你也跟我一樣是使用 DataSnap Server 的話,那就寫一個 function export 出來,再由 Client 端透過 dbx 呼叫即可比較兩邊版本,
不一致的時候就提示需要升級...這部分就不贅述了,如果不知道 Server 端怎麼寫,可以參考之前 blog 中的文章,相信應該不會粉困難…
to be continued...