plus.runtime.install 的path参数的值为_downloads/apk/10.apk
不知道什么原因,失败回调的参数 error一直为null
关键代码如下:
var path = '_downloads/apk/';
var fileName = String(res.data.url).split('/'); //值为:/apk/10.apk
fileName = fileName[fileName.length-1];
//检查安装包是否已存在
plus.io.resolveLocalFileSystemURL(path+fileName, function(entry) {
console.log('资源已下载:'+path+fileName)
installApk(path+fileName); // 更新应用资源
}, function(e) {
console.log('从服务端下载资源')
var down = plus.downloader.createDownload(api+res.data.url,{method:"GET",filename:path+fileName},
function(download,status){
if (status == 200) {
installApk(path+fileName);// 更新应用资源
}
});
down.start();
});
// 更新应用资源
var installApk = function(path){
mui.confirm('是否立即安装?','检测到新版本',['立即安装','稍后安装'],function(e){
if(e.index == 0){
loading.show();
plus.runtime.install(path,{},function(){
loading.hide();
console.log("安装文件成功!");
plus.nativeUI.alert("应用更新完成!",function(){
plus.runtime.restart();
});
},function(e){
loading.hide();
console.log(JSON.stringify(e));//这里!e一直为null,path路径为_downloads/apk/10.apk
mui.toast('安装失败');
});
}
})
}
6 个回复
pnpl
如果是离打包,记得添加sdk
install-apk-release.aar
1***@qq.com (作者)
出错原因已找到;
通过仔细阅读文档 http://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.install
发现对path参数部分说明如下:
仅支持本地地址,调用此方法前需把安装包从网络地址或其他位置放置到运行时环境可以访问的本地目录。
所以出错原因是_downloads/apk/目录不是运行时环境可访问的本地目录,只需将原来的_downloads/apk/ 修改为_doc/update/即可。
8***@qq.com
filename: '_doc/update/' + new Date().getTime() + '/' 改成这样 还是不好使
2021-01-28 17:22
5***@qq.com
IOS中, start(); 这个方法报空对象, 不知道是什么原因
lanxue
这个问题 你后来解决了吗
i***@126.com
似乎
plus.runtime.install(path,{ force: true },function(){
...
就可以了
path ,是下载的 path,不用改
Code0704 - 小前端一名
您好 我也遇到了您的这种问题 我按照你的解决方式还是没得到解决 能否帮我看一下