本人第一次写博客,菜鸟一只,也不大会用语言表述,写博客只是单纯记录下自己遇到的问题,并且记录下来以便日后使用的时候可以有个思路。如果能够帮助到别人就更好了。
现在公司的项目需要用vue做一个安卓app,需要实现app的自动更新功能。我的设计方案就是打开App先提交请求到后台,需要更新会返回下载地址。
创建下载的代码:
// 下载最新版本
JX_download(url){
plus.nativeUI.showWaiting( "下载中..." );
//创建下载管理对象
var SX_down= plus.downloader.createDownload(url,{}function ( dstatus ) {
// 下载完成
if ( status == 200 ) {
plus.nativeUI.closeWaiting();
//下载成功后的回调函数
plus.nativeUI.toast( "下载成功,准备安装" + d.filename );
plus.runtime.install(
d.filename,
{},
function(){
plus.nativeUI.toast('安装成功');
plus.runtime.restart();
},
function(e){
plus.nativeUI.toast(d.filename+'安装失败');
alert(JSON.stringify(e))
}
);
} else {
alert( "下载失败 " + status );
}
});
//开始下载任务
SX_down.start();
}, 我在测试的时候一直提示安装失败,当时找了很久才知道原来下载回来的安装包是损坏的,这个是跟后台的交互出了问题。我当时是用encodeURI函数对url地址进行处理才可以。自动安装需要下载回来的是.wgt格式或者安装包格式。
如果下载回来的是手机支持打开的文件,可以用plus.runtime.openFile(d.filename);进行文件的打开。
在Vue结合H5构建的App中,通过API进行文件下载时遇到安装失败的问题,原因可能是下载的.wgt安装包损坏。解决方法是确保后台交互正确,并使用encodeURI处理URL。若下载文件为手机支持格式,可以利用plus.runtime.openFile打开。

2973






