Usage

Register background updates

This type is used by location.startUpdates

tsx
import { location, permissions, storage } from 'kuito';

// At module scope: a background launch runs the app's modules, not its UI.
location.defineUpdates('run', async ({ locations }) => {
  const track: unknown[] = JSON.parse((await storage.get('track')) ?? '[]');

  await storage.set('track', JSON.stringify([...track, ...locations.map((fix) => fix.coords)]));
});

async function startRun() {
  const { status } = await permissions.request('locationAlways');

  if (status === 'granted')
    await location.startUpdates('run', {
      accuracy: 'high',
      distanceInterval: 10,
      notification: { title: 'Recording your run' },
    });
}

Type declaration

ts
export type LocationTaskOptions = WatchPositionOptions & {
  /** iOS: let Core Location pause updates while the device stays put. Off by default. */
  pausesUpdatesAutomatically?: boolean;
  /** iOS: the blue status bar pill while the app locates in the background. Off by default. */
  showsBackgroundLocationIndicator?: boolean;
  /** Android: the foreground service's notification. Defaults to the app's name. */
  notification?: { title?: string; body?: string };
};

Members 6

NameTypeRequiredDescription
accuracyAccuracyNo—
timeIntervalnumberNoMilliseconds between updates, at least. Android only; iOS delivers as fixes come.
distanceIntervalnumberNoMeters the device moves before the next update.
pausesUpdatesAutomaticallybooleanNoiOS: let Core Location pause updates while the device stays put. Off by default.
showsBackgroundLocationIndicatorbooleanNoiOS: the blue status bar pill while the app locates in the background. Off by default.
notification{ title?: string; body?: string;}NoAndroid: the foreground service's notification. Defaults to the app's name.
notification — nested fields

notification fields

NameTypeRequiredDescription
titlestringNo—
bodystringNo—
Generated from the public TypeScript declarations: signatures, props and defaults come from the checked source, descriptions from its JSDoc. No defaults are invented.