主题
安卓项目使用 AppUpdater 接入参考
AppUpdater 项目介绍
AppUpdater 是一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。
AppUpdater 核心库主要包括 app-updater 和 app-dialog。
- app-updater 主要负责后台下载更新App,无需担心下载时各种配置相关的细节,一键傻瓜式升级。
- app-dialog 主要是提供常用的Dialog和DialogFragment,简化弹框提示的实现,布局样式可随意定制。
基于 AppUpdater 升级库 和 UpgradeLink 后台服务,您可以轻松实现App版本升级,无需关心后台下载的各种细节,也无需关心升级规则的实现。
接入示例
1.clone AppUpdater 代码
shell
git clone https://github.com/jenly1314/AppUpdater.git
2.AppUpdater 示例代码项目位置在
shell
AppUpdater/app/src/main/java/com/king/appupdater/MainActivity.java
3.增加仓库地址,修改文件 settings.gradle
groovy
pluginManagement {
repositories {
maven { url 'https://jitpack.io' }
}
}
4.引入依赖
groovy
dependencies {
implementation 'com.github.toolsetlink:upgradelink-api-android:1.0.18'
}
5.注册 UpgradeLink 账号。 登录
6.获取到 accessKey 和 secretKey。
7.创建一个URL应用,即可获取到 应用唯一标识
8.配置应用版本。
9.配置升级规则。
使用 AppUpdater 示例代码进行获取升级策略。
10. 引入依赖
添加maven仓库地址:
pluginManagement {
repositories {
maven { url 'https://jitpack.io' }
}
}
implementation 'com.github.toolsetlink:upgradelink-api-android:1.0.18'
11. 用示例代码 系统弹框升级举例:
java
/**
* 系统弹框升级
*/
private void clickBtn3() {
new AlertDialog.Builder(this)
.setTitle("发现新版本")
.setMessage("1、新增某某功能、\n2、修改某某问题、\n3、优化某某BUG、")
.setPositiveButton("升级", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mAppUpdater = new AppUpdater.Builder(getContext())
.setUrl(mUrl)
.setSupportCancelDownload(true)
.build()
.setUpdateCallback(new AppUpdateCallback() {
@Override
public void onStart(String url) {
super.onStart(url);
// 模仿系统自带的横幅通知效果
AppDialogConfig config = new AppDialogConfig(getContext(), R.layout.dialog_heads_up);
config.setStyleId(R.style.app_dialog_heads_up)
.setWidthRatio(.95f)
.setGravity(Gravity.TOP);
AppDialog.INSTANCE.showDialog(getContext(), config);
new CountDownTimer(2000, 500) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
AppDialog.INSTANCE.dismissDialog();
}
}.start();
}
@Override
public void onProgress(long progress, long total, boolean isChanged) {
}
@Override
public void onFinish(File file) {
showToast("下载完成");
}
});
mAppUpdater.start();
}
}).show();
}
代码引入依赖
java
import com.toolsetlink.upgradelink.api.Client;
import com.toolsetlink.upgradelink.api.models.UrlUpgradeRequest;
import com.toolsetlink.upgradelink.api.models.UrlUpgradeResponse;
修改代码:
java
/**
* 系统弹框升级
*/
private void clickBtn3() {
// 初始化 Client
String accessKeyId = "mui2W50H1j-OC4xD6PgQag";
String accessKeySecret = "PEbdHFGC0uO_Pch7XWBQTMsFRxKPQAM2565eP8LJ3gc";
Client client = new Client(accessKeyId, accessKeySecret);
// 整理升级请求参数
UrlUpgradeRequest urlRequest = new UrlUpgradeRequest(
"OpggWISrLVRFa5y04LzkwA", // 应用唯一标识,上面步骤已获取到
1, // 当前应用版本,需要调整为传入当前应用的版本号
0, // 期望升级版本号,默认为0,为获取最新版本
Build.MODEL, // 设备型号,
Build.DEVICE // 设备唯一标识,可自行定义,能保证当前设备唯一即可
);
client.getUrlUpgrade(urlRequest, new Client.Callback<UrlUpgradeResponse>() {
public void onSuccess(UrlUpgradeResponse result) {
// 切换到主线程显示对话框
runOnUiThread(new Runnable() {
public void run() {
new AlertDialog.Builder(MainActivity.this)
.setTitle(result.msg)
.setMessage(result.data.promptUpgradeContent)
.setPositiveButton("升级", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mAppUpdater = new AppUpdater.Builder(getContext())
.setUrl(result.data.urlPath)
.setSupportCancelDownload(true)
.build()
.setUpdateCallback(new AppUpdateCallback() {
@Override
public void onStart(String url) {
super.onStart(url);
// 模仿系统自带的横幅通知效果
AppDialogConfig config = new AppDialogConfig(getContext(), R.layout.dialog_heads_up);
config.setStyleId(R.style.app_dialog_heads_up)
.setWidthRatio(.95f)
.setGravity(Gravity.TOP);
AppDialog.INSTANCE.showDialog(getContext(), config);
new CountDownTimer(2000, 500) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
AppDialog.INSTANCE.dismissDialog();
}
}.start();
}
@Override
public void onProgress(long progress, long total, boolean isChanged) {
}
@Override
public void onFinish(File file) {
showToast("下载完成");
}
});
mAppUpdater.start();
}
}).show();
}
});
}
@Override
public void onFailure(Exception e) {
System.err.println("升级失败: " + e.getMessage());
}
});
}