OTA

监听OTA新版本

若有新版本发布,则回调ACOTAUpgradeInfo

AC.otaMgr().setOtaListener(new PayloadCallback<ACOTAUpgradeInfo>() {
    @Override
    public void success(ACOTAUpgradeInfo upgradeInfo) {
        //获取升级类型
        if (upgradeInfo.getOtaMode() == 0) {
            //静默升级
        }else if(upgradeInfo.getOtaMode() == 1){
            //用户确认升级
        }else {
            //强制升级
        }
    }

    @Override
    public void error(ACException e) {
        //并不会走到这里   
    }
});

注意:控制台发布OTA版本时升级类型需要选择强制升级/静默升级(用户确认升级对于安卓设备是无法收到版本推送的),如果需要用户确认的话,可以在安卓屏幕上做弹框选择。

下载OTA文件

//upgradeInfo由上面接口获得;一般只有一个升级文件,所以取列表第一个文件
String url = upgradeInfo.getFiles().get(0).getDownloadUrl();
String checksum = upgradeInfo.getFiles().get(0).getCheckSum();
ACUtils.createSDDir("ota_download_path");
File file = null;
try {
    //建议首先执行垃圾文件清理工作,防止磁盘写满升级失败,同时也防止异常情况下下载文件不完整被使用 
    file = ACUtils.createSDFile("ota_download_path/file_name");
} catch (IOException e) {
}
AC.fileMgr().downloadFile(file, url, checksum, new ProgressCallback() {
    @Override
    public void progress(double progress) {
        //下载进度更新
    }, new VoidCallback() {
    @Override
    public void success() {
        //下载成功,建议调用otaMediaDone()接口通知云端下载文件成功,用于日志追踪
        //同时进行设备ota升级,另升级成功后,建议在此清理已完成升级的版本文件
    }

    @Override
    public void error(ACException e) {
        //下载失败,建议清理掉当前下载的不完整文件
    }
});