每次做項目都要加一遍版本更新的代碼,對開發人員來說,簡直就是噩夢般的存在,本人最近一個人要做三個客戶端,想想光版本更新就很頭疼,於是就有了本框架的誕生
因爲各個公司的版本更新的接口雖然大同小易,但是要做到面嚮所有的開發人員來用,所以衹能降低框架的簡單性,將所有要變的,都做成開發人員自己管理了
初始化的時候
new ApkUpdateCheck<ResonseEnty ,VersionBean>
這是更新接口返回的數據
{
"Status": 1,
"ErrCode": "000000",
"ErrMsg": null,
"ResultJson": "{
"VersionId": 1,
"VersionNo": "2.1.1",
"VersionName": "2.1.1",
"VersionLog": "xx---xxxxn\n【优化】我要买单的界面布局局部调整。\n\\n我们始终致力于改善您的体验,若果您觉得我们这个版本还不错,请在应用商城给我们一个评价,我们感激不尽。\\\\n如果您有什么问题,可以直接在微信公众号:xxxxxx或APP个人中心--反馈中直接留言,我们将及时反馈您的问题。",
"VersionUrl": "http: //www.jiujiumiandan.cn/jiujiumiandan-user.apk",
"MustUpdate": false
}"
}";
其中 ResonseEnty bean 是 請求接口返回的數據,對應生成的實體類,VersionBean 對應的是 ResultJson數據,
在回掉接口中會實現 獲取顯示,dialog的 title content,以及是否 是 要更新 apk
new ApkUpdateCheck(url, new AppVersionCheckCallBack<ResonseEnty,VersionBean>() { @Override public String getTitle(VersionBean t) { return t.getVersionNo(); } @Override public String getContent(VersionBean t) { return t.getVersionName(); } @Override public String getDownURL(VersionBean t) { String url=UrlEncodeUtils.encodeUrl(t.getVersionUrl()); Log.e("tag","url="+url); return "http://www.jiujiumiandan.cn/jiujiumiandan-user.apk"; } @Override public boolean isMustUpdate(VersionBean t) { return true; } @Override public boolean isShowDialog(ResonseEnty t1) { return true; } @Override public String getResultDesConstants(String result) { String dasd=DesConstants.DecryptDoNet(result, DesConstants.AESKey); Log.e("tag",dasd); dasd= "{\"Status\":1,\"ErrCode\":\"000000\",\"ErrMsg\":null,\"ResultJson\":\"{\\\"VersionId\\\":1,\\\"VersionNo\\\":\\\"2.1.1\\\",\\\"VersionName\\\":\\\"2.1.1\\\",\\\"VersionLog\\\":\\\"久久免单---用我买单,好酒免单\\\\n\\\\n【优化】我要买单的界面布局局部调整。\\\\n\\\\n我们始终致力于改善您的体验,若果您觉得我们这个版本还不错,请在应用商城给我们一个评价,我们感激不尽。\\\\n如果您有什么问题,可以直接在微信公众号:久久免单 或 APP个人中心--反馈中直接留言,我们将及时反馈您的问题。\\\",\\\"VersionUrl\\\":\\\"http://www.jiujiumiandan.cn/jiujiumiandan-user.apk\\\",\\\"MustUpdate\\\":false}\"}"; return dasd; } @Override public VersionBean getResultBaen(ResonseEnty t1) { return new Gson().fromJson(t1.getResultJson(),VersionBean.class); } }); apkUpdateCheck.setActivity(MainActivity.this); apkUpdateCheck.setResultBean(ResonseEnty.class); apkUpdateCheck.check();
getResultDesConstants 此方法表示 請求到接口成功之後返回的結果,但是很多公司可能會對數據進行加密,所以在此方法中可以進行操作,如 :解密 。。。。
getResultBaen 這個對應的是版本更新中詳細的bean了
isShowDialog 這個方法 中 就要做一些工作,可以控制是否顯示更新的dialog了。那麽你可以在方法中進行判斷了,當前版本是否是最新的
getTitle 這個表示 顯示dialog的 title
getContent 表示 顯示dialog ,詳情描述
getDownURL 表示 最新apk的URL
isMustUpdate 可能項目的apk 沒有出現重大bug 不需要客戶强行更新,所以這個方法返回false時,就算客戶取消了,也不回關閉app
當然了,每個app的dialog 和notifcation 都不一樣, 支持開發者繼承框架中dialog和 Notification ,當作參數傳入,就可以了,具體的使用方法,請移步到 github中
項目地址:https://github.com/MengLeiGitHub/ApkUpdateTool