npm i --save nativescript-downloader
- 版本:2.1.5
- GitHub: https://github.com/triniwiz/nativescript-downloader
- NPM: https://npmjs.net.cn/package/nativescript-downloader
- 下载
- 昨天: 3
- 上周: 6
- 上个月: 35
NativeScript Downloader
安装
NativeScript 4x
tns plugin add nativescript-downloader
NativeScript 3x
tns plugin add [email protected]
用法
TypeScript
import { Downloader } from 'nativescript-downloader';
Downloader.init(); // <= Try calling this after the app launches to start the downloader service
Downloader.setTimeout(120); //Increase timeout default 60s
import { Downloader, ProgressEventData, DownloadEventData } from 'nativescript-downloader';
const downloader = new Downloader();
const imageDownloaderId = Downloader.createDownload({
url:
'https://wallpaperscraft.com/image/hulk_wolverine_x_men_marvel_comics_art_99032_3840x2400.jpg'
});
downloader
.start(imageDownloaderId, (progressData: ProgressEventData) => {
console.log(`Progress : ${progressData.value}%`);
console.log(`Current Size : ${progressData.currentSize}%`);
console.log(`Total Size : ${progressData.totalSize}%`);
console.log(`Download Speed in bytes : ${progressData.speed}%`);
})
.then((completed: DownloadEventData) => {
console.log(`Image : ${completed.path}`);
})
.catch(error => {
console.log(error.message);
});
JavaScript
var Downloader = require('nativescript-downloader').Downloader;
Downloader.Downloader.init(); // <= Try calling this after the app launches to start the downloader service
Downloader.setTimeout(120); //Increase timeout default 60s
var Downloader = require('nativescript-downloader').Downloader;
var downloader = new Downloader();
var imageDownloaderId = downloadManager.createDownload({
url:
'https://wallpaperscraft.com/image/hulk_wolverine_x_men_marvel_comics_art_99032_3840x2400.jpg'
});
downloader
.start(imageDownloaderId, progressData => {
console.log(`Progress : ${progressData.value}%`);
})
.then(completed => {
console.log(`Image : ${completed.path}`);
})
.catch(error => {
console.log(error.message);
});
API
方法 | 默认 | 类型 | 描述 |
---|---|---|---|
createDownload(options: DownloadOptions) | string |
创建一个下载任务,返回任务的ID | |
getStatus(id: string) | StatusCode |
获取下载任务的当前状态 | |
start(id: string, progress?: Function) | Promise |
开始下载任务 | |
resume(id: string) | void |
恢复下载任务 | |
cancel(id: string) | void |
Cancels a download task. | |
pause(id: string) | void |
Pauses a download task. | |
getPath(id: string) | void |
获取下载任务的路径 |
示例图像
iOS | Android |
---|---|
##Angular
注入根组件
import { Downloader } from 'nativescript-downloader';
....
ngOnInit() {
Downloader.init(); // <= Try calling this after the app launches to start the downloader service
}
...
自定义下载器选项
// Request format for Downlaoder
DownloadOptions {
url: string;
query?: Object | string;
headers?: Object;
path?: string;
fileName?: string;
}
服务文件,可在任何地方使用
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { Downloader, ProgressEventData, DownloadEventData } from 'nativescript-downloader';
@Injectable({
providedIn: 'root',
})
export class DataDownLoadService {
public database: any;
downloader: Downloader = new Downloader();
constructor() { }
/**
* @ngdoc method
* @name downloadDb
* @description download generic method for nay file
* @memberof DataDownLoadService
* @param apiUrl : - https://myserver.com/mypath
* @param filename :- myfile.zip ...
* @param downloadlocation : mobile local location
*/
downloadFile(apiUrl, filename, downloadlocation) {
const subject = new Subject<any>();
// Request format for Downlaoder
// DownloadOptions {
// url: string;
// query?: Object | string;
// headers?: Object;
// path?: string;
// fileName?: string;
// }
// Prepare the header with token work
const headerHttp = {
"Content-Type": "application/json",
"Authorization": 'Bearer ' + 'Token...'
}
const url = apiUrl;
const zipDownloaderId = this.downloader.createDownload({
url: url,
headers: headerHttp,
path: downloadlocation,
fileName: filename
});
this.downloader
.start(zipDownloaderId, (progressData: ProgressEventData) => {
console.log(`Progress : ${progressData.value}%`);
console.log(`Current Size : ${progressData.currentSize}%`);
console.log(`Total Size : ${progressData.totalSize}%`);
console.log(`Download Speed in bytes : ${progressData.speed}%`);
})
.then((completed: DownloadEventData) => {
console.log(`zip file saved at : ${completed.path}`);
subject.next(true);
})
.catch(error => {
console.log('downloadDb', error.message);
subject.error(error);
});
return subject.asObservable();
}
}
待办事项
- [ ] 本地通知