Licensing
The plugin uses a perpetual license model with offline RSA-2048 validation. During evaluation you get 30-minute trial sessions — no credit card required.
Trial Mode
Without a license key the plugin runs in trial mode automatically:
- 30-minute sessions — tracking stops automatically and fires an
onTrialExpiredevent. - 1-hour cooldown — you must wait before starting a new trial session.
- Debug forced on — verbose logs are enabled so you can inspect behavior.
- Full feature access — HTTP posting, geofencing, adaptive filter — everything works.
BackgroundLocation.addListener('onTrialExpired', (event) => {
console.log('Trial ended at', new Date(event.timestamp));
// Tracking has been stopped automatically.
// Next trial available after 1-hour cooldown.
});Adding a License Key
Place the license key in your Capacitor config and re-run sync.
// capacitor.config.ts
import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.yourcompany.app',
plugins: {
BackgroundLocation: {
licenseKey: 'BGL1-eyJ...',
},
},
};
export default config;How Validation Works
- RSA-2048 signed payloads verified fully offline on-device.
- No network calls, no license server — your app works in airplane mode.
- License bound to your app's bundle identifier (e.g.
com.yourcompany.app). - Works across both Capacitor and React Native wrappers for the same bundle ID.
Perpetual License Model
What You Get
- Perpetual right to use the purchased version
- 1 year of updates included
- All features, all platforms
After Year One
- Keep using your current version forever
- Optionally renew for another year of updates
- No forced upgrades, no tracking cutoff
Checking License Status
The configure() result includes license information:
const result = await BackgroundLocation.configure({ ... });
console.log(result.licenseMode); // 'full' | 'trial'
console.log(result.licenseUpdatesUntil); // '2026-01-15' (if licensed)
console.log(result.licenseUpdateExpired); // true if updates expired
console.log(result.licenseError); // string if validation failedConfigureResult Interface
| Property | Type | Description |
|---|---|---|
licenseMode | 'full' | 'trial' | Current license mode. |
licenseUpdatesUntil | string? | ISO date until updates are available. |
licenseUpdateExpired | boolean? | True if plugin version exceeds update window. |
licenseError | string? | Validation error message (bundle mismatch, corrupted key, etc.). |