Skip to content

安卓项目使用 AppUpdater 接入参考

AppUpdater 项目介绍

AppUpdater 是一个专注于App更新,一键傻瓜式集成App版本升级的轻量开源库。

AppUpdater 核心库主要包括 app-updaterapp-dialog

  • app-updater 主要负责后台下载更新App,无需担心下载时各种配置相关的细节,一键傻瓜式升级。
  • app-dialog 主要是提供常用的Dialog和DialogFragment,简化弹框提示的实现,布局样式可随意定制。

接入示例

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'
}

img_1.png

6.获取到 accessKey 和 secretKey。

img_5.png

7.创建一个URL应用,即可获取到 应用唯一标识

img_2.png

8.配置应用版本。

img_3.png

9.配置升级规则。

img_4.png

使用 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());
        }
    });

}

点击按钮,即可获取到最新的升级策略。

img_6.png

img_7.png