Ably Asset Tracking SDK for JavaScript
![.github/workflows/check.yml](https://github.com/ably/ably-asset-tracking-js/workflows/.github/workflows/check.yml/badge.svg)
Overview
Ably Asset Tracking SDKs provide an easy way to track multiple assets with realtime location updates powered by Ably realtime network and Mapbox Navigation SDK with location enhancement.
Status: this is a preview version of the SDK. That means that it contains a subset of the final SDK functionality, and the APIs are subject to change. The latest release of this SDK is available in the Released section of this repository.
Ably Asset Tracking is:
- easy to integrate - comprising two complementary SDKs with easy to use APIs, available for multiple platforms:
- Asset Publishing SDK, for embedding in apps running on the courier's device
- Asset Subscribing SDK, for embedding in apps runnong on the customer's observing device
- extensible - as Ably is used as the underlying transport, you have direct access to your data and can use Ably integrations for a wide range of applications in addition to direct realtime subscriptions - examples include:
- passing to a 3rd party system
- persistence for later retrieval
- built for purpose - the APIs and underlying functionality are designed specifically to meet the requirements of a range of common asset tracking use-cases
This repository contains the Asset Subscribing SDK for Web.
Documentation
Visit the Ably Asset Tracking documentation for a complete API reference and code examples.
Useful Resources
Installation
To use Ably Asset Tracking in your app, install it as a dependency:
npm install @ably/asset-tracking
yarn add @ably/asset-tracking
Usage
Subscribing to location updates
import { Subscriber } from '@ably/asset-tracking';
const ablyOptions = {
key: ABLY_API_KEY,
clientId: CLIENT_ID,
};
const subscriber = new Subscriber({
ablyOptions,
});
const asset = subscriber.get('my_tracking_id');
asset.addLocationListener((locationUpdate) => {
console.log(`Location update recieved. Coordinates: ${locationUpdate.location.geometry.coordinates}`);
});
await asset.start(trackingId);
await asset.stop();
Subscribing to driver status
asset.addStatusListener((isOnline) => {
console.log(`Status update: Publisher is now ${isOnline ? 'online' : 'offline'}`);
});
Requesting publisher resolution
import { Accuracy } from '@ably/asset-tracking';
const resolution = {
accuracy: Accuracy.High,
desiredInterval: 1000,
minimumDisplacement: 1,
};
const asset = subscriber.get('my_tracking_id', resolution);
await asset.sendChangeRequest({
accuracy: Accuracy.Low,
desiredInterval: 3000,
minimumDisplacement: 5,
});
Example App
This repository also contains an example app that showcases how the Ably Asset Tracking SDK can be used:
Development
see Contributing.