首先上效果:
KongzueUpdateSDK 是用于实现更新流程的,默认支持使用系统对话框的更新提醒/过程/安装全套逻辑流程,也支持是用自定义更新 UI 实现可视化流程。
KongzueUpdateUI 则是配套的“非打扰式”的更新提示、更新过程以及下载完成三步界面框架,可实现不干扰用户正常界面使用,同时实现提醒的更新版本、显示更新过程等界面效果。
配合使用前需要先请求更新检查接口获取更新,如果没有自己的接口可参考之前的文章:使用KongzueUpdateSDK配合Fir.im完成应用内更新
接下来引入两个框架:
https://github.com/kongzue/KongzueUpdateSDK
https://github.com/kongzue/UpdateUI
//更新框架
implementation 'com.kongzue.kongzueupdatesdk:kongzueupdatesdk:3.0.0'
//UpdateUI
implementation 'com.kongzue.updateui:updateui:1.0.4'
在已经获得更新信息(版本、地址、更新日志)的情况下,就可以实现更新提醒:
private static UpdateUtil updateUtil
private static UpdateInfo updateInfo
private static UpdateUI updateUI;
/**
* 显示更新提醒
*
* @param me 上下文
*/
public static void showUpdateTip(Context me) {
String updateLog = {更新日志};
if (isNull(updateLog)) updateLog = me.getString(R.string.update_default_info);
updateInfo = new UpdateInfo()
.setInfo(updateLog)
.setVer({更新版本})
.setDownloadUrl({下载地址});
updateUI = new UpdateUI();
UpdateUI.beforeUpdateTitle = me.getString(R.string.update_default_title); //有新版本可用提示文案
UpdateUI.afterUpdateTitle = me.getString(R.string.update_ready_default_title); //安装包已就绪提示文案
UpdateUI.buttonUpdateDetails = me.getString(R.string.view_details); //查看详细日志按钮文案
UpdateUI.buttonUpdateNow = me.getString(R.string.update_now); //开始更新按钮文案
UpdateUI.txtUpdateLogs = updateLog;
UpdateUI.buttonInstallNow = me.getString(R.string.install_now); //立即安装按钮文案
UpdateUI.darkMode = true; //是否使用暗色模式
updateUI.setOnUpdateUIEventListener(new OnUpdateUIEventListener() {
@Override
public void onShow(int status) {
}
@Override
public void onStartDownload() {
updateUtil = new UpdateUtil(me, BuildConfig.APPLICATION_ID).setOnDownloadListener(new UpdateUtil.OnDownloadListener() {
@Override
public void onStart(long downloadId) {
updateUI.setProgress(0);
}
@Override
public void onDownloading(long downloadId, int progress) {
if (updateUI != null) updateUI.setProgress(progress);
}
@Override
public void onSuccess(long downloadId) {
me.runOnUiThread(new Runnable() {
@Override
public void run() {
if (updateUI != null) updateUI.readyInstall();
}
});
}
@Override
public void onCancel(long downloadId) {
}
});
updateUtil.doUpdate(updateInfo);
}
@Override
public void onIgnore(int status) {
}
@Override
public void onInstallNow() {
updateUtil.installApk(me);
}
});
updateUI.showUpdateUI(me);
}
备注:UpdateUI 是有默认文案的,你也可以通过上边的方法实现自定义,不设置即使用默认文案。
完事。