uni-app中plus.downloader.createDownload将app预装到安卓系统时,首次执行下载无响应,清理应用全部数据后又可下载

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app中plus.downloader.createDownload将app预装到安卓系统时,首次执行下载无响应,清理应用全部数据后又可下载

plus.downloader.createDownload 将 app 预装到安卓系统,首次执行下载无响应,清理应用全部数据后又可下载。

经过排查,捕获到的日志如下图,因为指定了下载目录,根据报错可以推断出应该是目录没有创建成功!导致下载失败!

想请官方解答下,什么情况会导致目录创建失败呢?权限应该都是有的。而且一定清理了应用全部数据后,就恢复正常,开发模式下也能正常使用

图片


1 回复

uni-app 中使用 plus.downloader.createDownload 进行文件下载时,如果首次执行下载无响应,但清理应用数据后又可以正常下载,可能是由于以下原因导致的:

1. 缓存或状态问题

  • 原因:应用在首次运行时,可能由于某些缓存或状态未正确初始化,导致下载功能无法正常工作。清理应用数据后,这些缓存或状态被重置,下载功能恢复正常。
  • 解决方案:在应用启动时,确保所有必要的状态和缓存都已正确初始化。可以在 onLaunchonShow 生命周期中检查并初始化相关状态。

2. 权限问题

  • 原因:首次运行时,应用可能没有获取到必要的权限(如存储权限),导致下载功能无法正常工作。清理应用数据后,权限被重置,应用重新请求权限,下载功能恢复正常。
  • 解决方案:在应用启动时,检查并请求必要的权限。可以使用 uni.authorizeplus.android.requestPermissions 来请求权限。
uni.authorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        console.log('授权成功');
    },
    fail() {
        console.log('授权失败');
    }
});

3. 下载器初始化问题

  • 原因plus.downloader.createDownload 可能在首次运行时未正确初始化,导致下载功能无法正常工作。清理应用数据后,下载器重新初始化,下载功能恢复正常。
  • 解决方案:在创建下载任务之前,确保下载器已正确初始化。可以在创建下载任务前添加一些日志,检查下载器的状态。
const downloadTask = plus.downloader.createDownload(url, {
    filename: '_downloads/' + fileName
}, function(d, status) {
    if (status == 200) {
        console.log('下载成功');
    } else {
        console.log('下载失败');
    }
});

downloadTask.start();

4. 网络问题

  • 原因:首次运行时,网络连接可能不稳定或未正确建立,导致下载功能无法正常工作。清理应用数据后,网络连接重新建立,下载功能恢复正常。
  • 解决方案:在下载任务开始前,检查网络连接状态。可以使用 uni.getNetworkType 来检查网络类型,并提示用户确保网络连接正常。
uni.getNetworkType({
    success(res) {
        if (res.networkType === 'none') {
            console.log('无网络连接');
        } else {
            console.log('网络连接正常');
        }
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!