uni-app plus.downloader.enumerate 报Bug
uni-app plus.downloader.enumerate 报Bug
16 回复
bug 已确认。 确认下载任务应该持久化管理。
更多关于uni-app plus.downloader.enumerate 报Bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html
下个版本能恢复吗?着急用。
回复 q***@163.com: 我们尽快。 有进展会在这里同步你
回复 q***@163.com: 在内测环境修复了。你留个qq. 我打个内测包给你试试
回复 DCloud_Android_DQQ: 1446145513
应该不是5+plus的问题,还是hubilder更新的问题。
别沉
两个问题:
1 帮忙提供一个可以说明问题的可执行代码页面
2 其实这种下载任务,重启后应该清除掉是不是更合理
从读取数据方便性角度下,清理掉当然不合理啊,如果想找下载完成的历史数据做文件读取/删除等操作是不是更方便. 从应用缓存大小角度下,自动清理可能合理.就是不知道自定义储存和plus.downloader的缓存哪一个更占空间
回复 q***@163.com: 明白。 那还是帮忙提供一个 可以复现问题的示例吧。 提供后 我这边看看
<style lang="scss">
</style>
<template>
<view>
<button type="default" @click="_add">添加一个下载任务</button>
<button type="default" @click="_getSuccessList">获取下载成功的枚举列表</button>
<text>点击添加下载等待下载成功后,点击获取下载成功的列表,此时会得到下载成功的长度,然后关闭App再次打开点击获取下载成功的列表,此时获取的是0(预期是重新打开不会清除下载成功的记录)</text>
</view>
</template>
<script>
export default {
data() {
return {
};
},
methods: {
_add(){
this.downLoadTask = plus.downloader.createDownload("http://39.101.171.94:8899/videos/clip/41010500001320000013/2022-01-05/20220105115939.mp4", {
filename: `_downloads/ballvideo/测试.mp4`, //下载的位置
timeout: 0,
name: "别名", //别名
}, (download, status) => {
if (status == 200) {
uni.showToast({
title:'下载成功'
})
}
});
this.downLoadTask.start()
uni.showToast({
title: "已添加至下载列表",
icon: "none"
})
},
_getSuccessList(){
plus.downloader.enumerate(downListSus => { //获取已经下载成功了的列表
uni.showToast({
title:`获取到${downListSus.length}个下载成功的任务`,
icon:"none"
})
}, 4);
},
}
}
</script>
好 我试试
HX3.3.7+已修复该问题
plus.downloader.enumerate 是 UniApp 中用于枚举已创建下载任务的方法。常见报错原因及解决方案如下:
1. 权限问题
- 确保已配置下载权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> - 动态权限申请(Android 6.0+)需在调用前处理
2. 调用时机不当
- 需在
plusready事件后调用:document.addEventListener('plusready', () => { plus.downloader.enumerate((tasks) => { console.log(tasks) }) })
3. 参数格式错误
- 正确调用格式:
// 枚举全部任务 plus.downloader.enumerate((tasks) => {}) // 枚举指定状态任务(0:未开始,1:下载中,2:暂停,3:已完成,4:失败) plus.downloader.enumerate((tasks) => {}, { state: 3 })
4. 平台差异
- iOS 需注意:下载任务仅限应用生命周期内,应用重启后无法枚举历史任务
- Android 可枚举持久化存储的任务
5. 常见错误处理
try {
plus.downloader.enumerate((tasks) => {
if(!tasks) {
console.log('无下载任务')
return
}
tasks.forEach(task => {
console.log(task.url, task.state)
})
})
} catch(e) {
console.error('枚举失败:', e.message)
}


