nativescript-background-http-cancelable
TypeScript icon, indicating that this package has built-in type declarations

3.1.1 • Public • Published

About

A cross platform plugin for the NativeScript framework, that provides background upload for iOS and Android.

There is a stock NativeScript http module that can handle GET/POST requests that work with strings and JSONs. It however comes short in features when it comes to really large files.

The plugin uses NSURLSession with background session configuration for iOS; and for android - the alexbbb/android-upload-service that implements an IntentService.

Source

License

Apache-2.0

Installation

Install

tns plugin add nativescript-background-http

Install plugin using NativeScript Sidekick

In the App Settings screen choose Plugins, switch to the Available tab and search for "nativescript-background-http". Click on the Background Http plugin and then click Install.

Usage

For sample application with single and multiple image selection ready for Android and IOS follow this link

How-To Background Upload

var bghttp = require("nativescript-background-http");

var session = bghttp.session("image-upload");

var request = {
    url: "http://myserver.com",
    method: "POST",
    headers: {
        "Content-Type": "application/octet-stream",
        "File-Name": "bigpig.jpg"
    },
    description: "{ 'uploading': 'bigpig.jpg' }"
};

var task = session.uploadFile("file/path/bigpig.jpg", request);

task.on("progress", logEvent);
task.on("error", logEvent);
task.on("complete", logEvent);

function logEvent(e) {
	console.log(e.eventName);
}

How-To Data Binding

Task implementations are Observable and fire property change events for

  • upload
  • totalUpload
  • status

So you can bind to task properties in the UI markup:

<ListView items="{{ tasks }}">
	<ListView.itemTemplate>
		<StackLayout>
			<Label text="{{ upload, 'Upload: ' + upload + ' / ' + totalUpload }}" />
			<Progress value="{{ upload }}" maxValue="{{ totalUpload }}" />
			<Label text="{{ description, 'description: ' + description }}" />
			<Label text="{{ status, 'status: ' + status }}" />
		</StackLayout>
	</ListView.itemTemplate>
</ListView>

Node.js Server

A simple server written in nodejs should look like that:

var http = require("http");
var fs = require("fs");

var server = http.createServer(function(request, response) {
    request.pipe(fs.createWriteStream("out_file.bin", { flags: 'w', encoding: null, fd: null, mode: 0666 }));
}
server.listen(8083);

You can check the example server in the source.

Package Sidebar

Install

npm i nativescript-background-http-cancelable

Weekly Downloads

1

Version

3.1.1

License

Apache-2.0

Unpacked Size

32 kB

Total Files

7

Last publish

Collaborators

  • icer2000