Iniziare
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/background-geolocation`, `@capgo/capacitor-background-geolocation`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/background-geolocation/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
@capgo/background-geolocation Combina il tracciamento della posizione di background con precisione con la geofrenatura nativa per iOS e Android. Utilizzalo per le zone di consegna, i negozi, i siti di lavoro, le università, i controlli di accesso, le avvisagioni di percorso e qualsiasi workflow che richieda eventi di ingresso o uscita anche quando il WebView non è in esecuzione.
Puoi utilizzare la nostra configurazione assistita da AI per installare il plugin. Aggiungi le Capgo competenze al tuo strumento AI utilizzando il seguente comando:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsPoi utilizza il seguente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/background-geolocation` plugin in my project.Se preferisci la configurazione manuale, installa il plugin eseguendo i seguenti comandi e segui le istruzioni specifiche per la piattaforma riportate di seguito:
bun add @capgo/background-geolocationbunx cap syncImporta
Sezione intitolata “Importa”import { BackgroundGeolocation } from '@capgo/background-geolocation';API Panoramica
Sezione intitolata “API Panoramica”Per iniziare a ricevere aggiornamenti sulle modifiche della posizione del dispositivo, chiamare questo metodo. Un Promesse viene restituita per indicare che è terminata la chiamata. Il callback verrà chiamato ogni volta che è disponibile una nuova posizione o se è stato verificato un errore durante la chiamata di questo metodo. Non si fidi della rifiutazione della promessa per questo.
import { BackgroundGeolocation } from '@capgo/background-geolocation';
await BackgroundGeolocation.start( { backgroundMessage: "App is using your location in the background", backgroundTitle: "Location Service", requestPermissions: true, stale: false, distanceFilter: 10 }, (location, error) => { if (error) { console.error('Location error:', error); return; } if (location) { console.log('New location:', location.latitude, location.longitude); } });Smette gli aggiornamenti della posizione.
import { BackgroundGeolocation } from '@capgo/background-geolocation';
await BackgroundGeolocation.stop();openSettings
Sezione intitolata “openSettings”Apre la pagina di impostazioni di localizzazione del dispositivo. Utile per dirigere gli utenti a abilitare i servizi di localizzazione o regolare le autorizzazioni.
import { BackgroundGeolocation } from '@capgo/background-geolocation';
// Direct user to location settingsawait BackgroundGeolocation.openSettings();setPlannedRoute
Sezione intitolata “setPlannedRoute”Esegue un file audio quando l'utente si allontana dalla rotta pianificata. Questo dovrebbe essere utilizzato per riprodurre un suono (anche in background, solo per nativo).
import { BackgroundGeolocation } from '@capgo/background-geolocation';
await BackgroundGeolocation.setPlannedRoute({ soundFile: "notification.mp3", route: [[-74.0060, 40.7128], [-118.2437, 34.0522]]});Geofencing nativo
Sezione intitolata “Geofencing nativo”Il geofencing funziona nel layer nativo, quindi iOS e Android possono attivare gli eventi di ingresso e uscita senza dipendere dal WebView per restare svegli. Configura un URL di webhook HTTP o HTTPS quando il tuo backend deve ricevere le transizioni anche mentre l'interfaccia utente dell'app è sospesa.
import { BackgroundGeolocation } from '@capgo/background-geolocation';
await BackgroundGeolocation.setupGeofencing({ url: 'https://api.example.com/geofences', notifyOnEntry: true, notifyOnExit: true, payload: { userId: '123' },});
await BackgroundGeolocation.addGeofence({ identifier: 'store-42', latitude: 37.33182, longitude: -122.03118, radius: 150, payload: { storeId: '42' },});
const handle = await BackgroundGeolocation.addListener( 'geofenceTransition', (event) => { console.log(event.identifier, event.transition); },);
const errorHandle = await BackgroundGeolocation.addListener( 'geofenceError', (event) => { console.error(event.identifier, event.message); },);
const { regions } = await BackgroundGeolocation.getMonitoredGeofences();console.log(regions);
await BackgroundGeolocation.removeGeofence({ identifier: 'store-42' });await handle.remove();await errorHandle.remove();Su iOS, il geofencing richiede l'autorizzazione di localizzazione sempre attiva. Su Android 10 e versioni successive, aggiungi la permessione di localizzazione in background al manifesto dell'app quando hai bisogno di geofencing in background:
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />Riferimento al tipo
Sezione intitolata “Riferimento al tipo”StartOptions
Sezione intitolata “StartOptions”Le opzioni per la configurazione degli aggiornamenti della posizione.
export interface StartOptions { /** * If the "backgroundMessage" option is defined, the plugin will * provide location updates whether the app is in the background or the * foreground. If it is not defined, location updates are only * guaranteed in the foreground. This is true on both platforms. * * On Android, a notification must be shown to continue receiving * location updates in the background. This option specifies the text of * that notification. * * @since 7.0.9 * @example "Getting your location to provide better service" */ backgroundMessage?: string; /** * The title of the notification mentioned above. * * @since 7.0.9 * @default "Using your location" * @example "Location Service" */ backgroundTitle?: string; /** * Whether permissions should be requested from the user automatically, * if they are not already granted. * * @since 7.0.9 * @default true * @example * // Auto-request permissions * requestPermissions: true * * // Don't auto-request, handle manually * requestPermissions: false */ requestPermissions?: boolean; /** * If "true", stale locations may be delivered while the device * obtains a GPS fix. You are responsible for checking the "time" * property. If "false", locations are guaranteed to be up to date. * * @since 7.0.9 * @default false * @example * // Allow stale locations for faster initial response * stale: true * * // Only fresh locations * stale: false */ stale?: boolean; /** * The distance in meters that the device must move before a new location update is triggered. * This is used to filter out small movements and reduce the number of updates. * * @since 7.0.9 * @default 0 * @example * // Update every 10 meters * distanceFilter: 10 * * // Update on any movement * distanceFilter: 0 */ distanceFilter?: number;}Location
Sezione intitolata “Posizione”Rappresenta una posizione geografica con varie attributi. Contiene tutte le proprietà standard di posizione restituite dai provider GPS/rete.
export interface Location { /** * Latitude in degrees. * Range: -90.0 to +90.0 * * @since 7.0.0 * @example 40.7128 */ latitude: number; /** * Longitude in degrees. * Range: -180.0 to +180.0 * * @since 7.0.0 * @example -74.0060 */ longitude: number; /** * Radius of horizontal uncertainty in metres, with 68% confidence. * Lower values indicate more accurate location. * * @since 7.0.0 * @example 5.0 */ accuracy: number; /** * Metres above sea level (or null if not available). * * @since 7.0.0 * @example 10.5 */ altitude: number | null; /** * Vertical uncertainty in metres, with 68% confidence (or null if not available). * * @since 7.0.0 * @example 3.0 */ altitudeAccuracy: number | null; /** * `true` if the location was simulated by software, rather than GPS. * Useful for detecting mock locations in development or testing. * * @since 7.0.0 * @example false */ simulated: boolean; /** * Deviation from true north in degrees (or null if not available). * Range: 0.0 to 360.0 * * @since 7.0.0 * @example 45.5 */ bearing: number | null; /** * Speed in metres per second (or null if not available). * * @since 7.0.0 * @example 2.5 */ speed: number | null; /** * Time the location was produced, in milliseconds since the unix epoch. * Use this to check if a location is stale when using stale: true. * * @since 7.0.0 * @example 1640995200000 */ time: number | null;}CallbackError
Sezione intitolata “CallbackError”Oggetto di errore che può essere passato al callback di avvio della posizione. Estende l'errore standard con codici di errore facoltativi.
export interface CallbackError extends Error { /** * Optional error code for more specific error handling. * * @since 7.0.0 * @example "PERMISSION_DENIED" */ code?: string;}SetPlannedRouteOptions
Sezione intitolata “SetPlannedRouteOptions”export interface SetPlannedRouteOptions { /** * The name of the sound file to play. * Must be a valid sound relative path in the app's public folder to work for both web and native platforms. * There's no need to include the public folder in the path. * @since 7.0.10 * @example "notification.mp3" * */ soundFile: string; /** * The planned route as an array of longitude and latitude pairs. * Each pair represents a point on the route. * This is used to define a route that the user can follow. * The route is used to play a sound when the user deviates from it. * @since 7.0.11 * @example [[-74.0060, 40.7128], [-118.2437, 34.0522]] */ route: [number, number][];
/** * The distance in meters that the user must deviate from the planned route to trigger the sound. * This is used to determine how far off the route the user can be before the sound is played. * If not specified, a default value of 50 meters is used. * @since 7.0.11 * @default 50 * @example 50 */ distance: number;}Fonte di Verità
Sezione intitolata “Fonte di Verità”Questa pagina è generata dal plugin’s src/definitions.tsRiepilogo quando le informazioni pubbliche API cambiano in modo upstream.
Continua da Getting Started
Sezione intitolata “Continua da Getting Started”Se stai utilizzando Getting Started per pianificare il lavoro del plugin nativo, connettilo con Utilizza @capgo/background-geolocation per la capacità nativa in Utilizza @capgo/background-geolocation, Directory Plugin Capgo per il workflow del prodotto in Directory Plugin Capgo Plugin Capacitor sviluppati da Capgo per i dettagli di implementazione in Plugin Capacitor sviluppati da Capgo, Aggiunta o Aggiornamento di Plugin per i dettagli di implementazione in Aggiunta o Aggiornamento di Plugin, e Alternative Plugin Enterprise Ionic per il workflow del prodotto in Alternative Plugin Enterprise Ionic.