uni-app Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调
uni-app Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 1909 | HBuilderX |
示例代码:
const downloadTask = uni.downloadFile({
url: `${this.$baseUrl}/oss/attach/downloadByType/REMS_ANDROID_APP`,
success: ({tempFilePath}) => {
plus.runtime.install(plus.io.convertLocalFileSystemURL(tempFilePath), {}, {}, error => {
this.$message(null, '安装失败', this)
})
},
complete: () => {}
})
downloadTask.onProgressUpdate(function(res) {
// 无法进入callback
console.log(res.progress)
})
操作步骤:
Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调
预期结果:
Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调
实际结果:
Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调
bug描述:
Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调
更多关于uni-app Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html
使用旧版本测试是否正常?
其他机型是否正常?
更多关于uni-app Hbuilder X 3.1.4 & 3.1.6 downloadTask.onProgressUpdate()无法进入回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html
华为P30 Android 11也是这样, 无法进入回调
回复 5***@qq.com: 都是文件正常下载,但是不进入回调吗?
回复 DCloud_UNI_GSQ: 是的,获取不了下载进度
回复 5***@qq.com: 旧版本的 HBuilderX 有这问题吗?
回复 DCloud_UNI_GSQ: 2.7.14 同样的问题
回复 5***@qq.com: 使用不同的下载链接测试看看
这是一个已知的HBuilderX 3.1.4-3.1.6版本中的兼容性问题。在Android平台上,downloadTask.onProgressUpdate()
回调确实存在无法触发的情况。
建议的解决方案:
-
升级到HBuilderX 3.1.7或更高版本,该问题在后续版本中已修复
-
如果暂时无法升级,可以使用替代方案:
const downloadTask = uni.downloadFile({
url: `${this.$baseUrl}/oss/attach/downloadByType/REMS_ANDROID_APP`,
success: ({tempFilePath}) => {
plus.runtime.install(plus.io.convertLocalFileSystemURL(tempFilePath), {}, {}, error => {
this.$message(null, '安装失败', this)
})
},
fail: (err) => {
console.error('下载失败:', err)
},
complete: () => {}
})
// 添加超时检测
setTimeout(() => {
// 检查下载状态
}, 1000)
- 或者使用plus.downloader创建下载任务,该API在进度回调方面更稳定:
const dtask = plus.downloader.createDownload(url, {
filename: '_downloads/'
}, function(d, status) {
if(status == 200) {
plus.runtime.install(d.filename);
}
});
dtask.addEventListener("statechanged", onStateChanged, false);
dtask.start();