downloadManager

论坛示例

为帮助用户更好更快的使用原生插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

通过 downloadManager 原生插件,能够对所有的下载进程进行管理,并可以通过界面来查看下载进度等信息,同时还提供压缩包解压、快速查看下载完成文件等功能

openManagerView

打开下载管理界面

openManagerView({params}, callback(ret, err))

params

title:

  • 类型:字符串
  • 默认值:下载管理
  • 描述:显示在下载界面顶部栏的标题

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 描述:点击列表中下载完成项的回调

内部字段:

{
    id: '',                          //下载记录 id
    mimeType: '',                    //文件类型
    savePath: '',                    //下载文件的本地存储路径
    uncompressPath: ''               //压缩文件解压缩后路径
    event: true                      //下载管理界面返回时的事件,布尔类型
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.openManagerView({
    title: '下载管理'
}, function(ret, err) {
    if (ret) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

closeManagerView

关闭下载管理界面

closeManagerView()

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.closeManagerView();

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

enqueue

开始一个下载

enqueue({params}, callback(ret, err))

params

url:

  • 类型:字符串
  • 默认值:无
  • 描述:资源地址

encode:

  • 类型:布尔
  • 默认值:true
  • 描述:(可选项)是否对url进行编码。传false时底层将不会对url进行编码

savePath:

  • 类型:字符串
  • 默认值:无
  • 描述:(可选项)存储路径,不传时使用自动创建的路径
  • 注意:对于Android10以上设备,需要使用应用私有目录才能正常使用原生插件接口,使用私有目录后对Android10及以下设备无影响,建议都存储到应用私有目录下

cache:

  • 类型:布尔
  • 默认值:true
  • 描述:(可选项)是否使用缓存

allowResume:

  • 类型:布尔
  • 默认值:false
  • 描述:(可选项)是否开启断点续传,需要服务器支持

uncompress:

  • 类型:布尔
  • 默认值:false
  • 描述:(可选项)下载完成时是否解压缩文件

headers:

  • 类型:JSON 对象
  • 默认值:无
  • 描述:(可选项)请求头

mimeType:

  • 类型:字符串
  • 默认值:通过响应头获取
  • 描述:(可选项)被下载目标的类型(*/*)

title:

  • 类型:字符串
  • 默认值:通过资源地址截取
  • 描述:(可选项)展示在managerView列表中的文件标题

iconPath:

  • 类型:字符串
  • 默认值:无
  • 描述:(可选项)该项下载显示在 managerView 中对应的图标

networkTypes:

  • 类型:字符串
  • 默认值:all
  • 描述:(可选项)允许自动下载的网络环境,参考网络环境常量

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    id: '123456'		//新下载记录的 id
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.enqueue({
    url: 'http://xxx.zip',
    savePath: 'fs://xxx.zip',
    cache: true,
    allowResume: true,
    title: '教程',
    networkTypes: 'all'
}, function(ret, err) {
    if (ret) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

pause

暂停下载

pause({params}, callback(ret, err))

params

id:

  • 类型:字符串
  • 默认值:无
  • 描述:下载记录的 id

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    status: false,            //操作状态
    msg: ''                   //操作失败时的描述
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.pause({
    id: '123'
}, function(ret, err) {
    if (ret.status) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

补充说明

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

resume

继续下载

resume({params}, callback(ret, err))

params

id:

  • 类型:字符串
  • 默认值:无
  • 描述:下载记录的 id

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    status: false,		//操作状态
    msg: ''           	//操作失败时的描述
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.resume({
    id: '123'
}, function(ret, err) {
    if (ret.status) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

补充说明

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

remove

删除下载

remove({params}, callback(ret, err))

params

ids:

  • 类型:数组
  • 默认值:无
  • 描述:下载记录的 id 数组

deleteFiles:

  • 类型:布尔
  • 默认值:false
  • 描述:(可选项)是否同时删除本地文件

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    number: 1          //成功完成删除操作的总数,没有则返回-1
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.remove({
    ids: [
        '123456',
        '1234567'
    ]
}, function(ret, err) {
    if (ret) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

补充说明

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

query

查询下载状态,当查询条件均为空时,返回所有下载记录信息

query({params}, callback(ret, err))

params

ids:

  • 类型:数组
  • 默认值:无
  • 描述:(可选项)下载记录的 id 数组

status:

  • 类型:数字
  • 默认值:无
  • 描述:(可选项)下载状态,详见下载状态下载状态常量

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    data:
    [{
        id: '123456',                  		//下载id
        status: 1,                     		//下载状态
        url: '',                       		//资源地址
        savePath: '',                     	//下载文件本地存储路径
        title: '教程',                  	//下载文件标题
        totalSize: 1000,               		//文件总大小,单位 byte
        finishSize: 500,               		//已完成下载大小,单位 byte
        mimeType: 'audio/mp4',         		//文件类型
        iconPath: ''                   		//图片路径
        reason: ''                     		//当下载发生错误时,错误的描述。详见下载错误常量表
    }]
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.query({
    ids: [
        '123456',
        '1234567'
    ]
}, function(ret, err) {
    if (ret) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

补充说明

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

openDownloadedFile

打开下载文件

openDownloadedFile({params}, callback(ret, err))

params

id:

  • 类型:字符串
  • 默认值:无
  • 描述:下载记录的 id

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    status: false,		//操作状态
    msg: ''           	//操作失败时的描述
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.openDownloadedFile({
    id: '123456'
}, function(ret, err) {
    if (ret.status) {
        api.alert({
            msg: JSON.stringify(ret)
        })
    } else {
        api.alert({
            msg: JSON.stringify(err)
        })
    }
});

补充说明

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

getPrivateDirs

android获取外部存储应用私有目录,对应“Android/data/packagename”,Android10以上设备需要把下载文件存储到私有目录下才能正常下载和访问。仅Android支持

getPrivateDirs(callback(ret))

callback(ret, err)

ret:

  • 类型:JSON 对象

内部字段:

{
    
    dir: ''           	//返回私有目录路径
}

示例代码

var downloadManager = api.require('downloadManager');
downloadManager.getPrivateDirs(function (ret) {
    alert(ret);
});

补充说明

可用性

Android系统

可提供的1.0.0及更高版本

网络环境

网络环境

取值范围

  • mobile //手机网络
  • wifi //wifi网络
  • all //手机和wifi网络

下载状态

下载状态

取值范围

  • 0 //等待下载
  • 1 //正在下载
  • 2 //暂停状态,等待恢复或被重新唤醒
  • 3 //下载成功
  • 4 //下载发生错误

下载错误

下载错误

取值范围

  • 1000 //未知错误
  • 1001 //存储已满
  • 1002 //未发现存储设备
  • 1003 //目标资源发生了重定向
  • 1004 //网络资源错误

论坛示例

为帮助用户更好更快的使用原生插件,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

是否仍需要帮助? 请保持联络!
最后更新于 2023/01/18