一、前言 上一篇我們完成了軟體的基本功能,如果想在用戶使用我們的app時,自動檢測新版本並讓自動完成安裝,這樣豈不是更好?本篇我們就來探究一下遠程更新的過程,並完成實際的功能。另外在使用過程中發現,登錄之後重啟app,會發現需要再次登錄,使用很不方便,我們也在第三部分解決這個問題。 二、fusion ...
一、前言
上一篇我們完成了軟體的基本功能,如果想在用戶使用我們的app時,自動檢測新版本並讓自動完成安裝,這樣豈不是更好?本篇我們就來探究一下遠程更新的過程,並完成實際的功能。另外在使用過程中發現,登錄之後重啟app,會發現需要再次登錄,使用很不方便,我們也在第三部分解決這個問題。
二、fusion app遠程更新
- 遠程更新的本質
遠程更新的本質,就是通過介面獲取數據並做處理。主要分為以下三步:
- 開發後臺服務介面,介面提供版本號、更新內容、下載鏈接等信息
- 獲取本地安裝的app的版本信息
- 本地發起http請求,獲取遠程的數據,比較本地版本和遠程的版本,如果遠程的版本大於本地版本,則需要更新
- 遠程更新的代碼實現
首先我們準備服務介面,已經有應用準備好了相關介面,我們只需下載做好配置即可。這裡後臺採用水仙app,app界面如下:
【水仙app】
下載鏈接:https://wwp.lanzoup.com/iB9Y10n62t0b
提取碼 : hgsc
使用qq登錄註冊後,在app主界面,點擊我的後臺-->右上角三個點-->修改配置,按照如下配置,這個key我們記錄下來,會用於後面介面請求。
在app首頁,點擊對接文檔-->更新系統-->點鏈接,可以看到介面需要傳輸的參數和返回的參數,接下來我們按照介面文檔來編寫代碼。
以下是代碼實現:
-- 將以下代碼粘貼到程式啟動事件中或者側滑欄增加一個檢查更新的欄目,放置在點擊事件中。
function 檢查更新(url,admin,key)
packinfo=this.getPackageManager().getPackageInfo(this.getPackageName(),((1552294270/8/2-8392)/32/1250-25.25)/8-236)
version=tostring(packinfo.versionName)
--print(version)
local url=url.."?admin="..admin.."&key="..key
Http.get(url,nil,"utf-8",nil,function(code,content)
if code==200 and content then
local cjson=require("cjson")
local JSON=cjson.decode(content)
ver=JSON.data.ver
link=JSON.data.link
if ver>version then
對話框()
.設置標題("版本更新")
.設置消息(JSON.data.content)
.設置積極按鈕("立即下載",function()
彈出消息("應用正在下載,請關註通知欄")
下載文件(link)
安裝程式("/storage/emulated/0/Download/"..取文件名(link))
end)
.設置消極按鈕("暫時不考慮")
.顯示()
end
else
彈出消息("網路錯誤或參數錯誤,請檢查")
end
end)
end
function 安裝程式(路徑)
import "android.net.*"
import "android.content.*"
intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse("file://"..路徑),"application/vnd.android.package-archive")
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
activity.startActivity(intent)
end
function 取文件名(path)
return path:match(".+/(.+)$")
end
url="http://shuixian.ltd/main/api/new/new.php"
admin="1213212313" -- 管理員賬號就是註冊登錄水仙的qq號
key="123123123" -- 採用自己的key
檢查更新(url,admin,key)
- fusion app配置及水仙後臺配置
修改版本名為1.1,再點擊右上角三個點,再點打包安裝
打包完成後,可以看到打包後的apk路徑,記錄下這個路徑。
打開水仙app,依次點擊我的後臺-->更新系統,上傳上一步路徑下的app,在進行如下配置:
版本號:填1.1
更新內容:隨便填寫
下載鏈接:點擊下方上傳安裝包後會自動生成,不做更改
配置完成後,再點擊發佈更新。
水仙app配置完成後,返回我們的工程文件,再把app的版本名更改為1.0,點擊打包安裝,打開安裝後的app看到如下界面,就說明完成了遠程更新的功能。
三、fusion app免登錄
重啟app出現再次登錄的原因是因為webview載入網頁,沒有記錄cookie,在配置頁-網頁載入完畢事件中增加如下代碼:
import "android.webkit.CookieManager"
local cookieManager = CookieManager.getInstance()
cookieManager.flush()
配置好後再次打包安裝即可。
如果還不清楚怎麼操作,可以下載我的工程文件,導入到自己的FA中查看。
鏈接:https://pan.baidu.com/s/1JXUdL3OZaOSNtVaeZy9H7w
提取碼:9d92
四、總結
本文完成了遠程更新的功能和免登錄的功能,這樣一個簡單的應用就完成了。當然FA還提供一些其他功能,後面的文章再介紹自帶的一些函數和組件。
本文由【產品經理不是經理】gzh同步發佈,歡迎關註