Saltare al contenuto

Iniziare

@capgo/capacitor-background-task consente a un'app Capacitor di registrare dei lavori periodici per la sincronizzazione, l'aggiornamento della cache, la consegna degli analytics e altre operazioni di fetch in background.

Finestra del terminale
npm install @capgo/capacitor-background-task
npx cap sync

Aggiungi il modello di elaborazione in background e l'identificatore delle attività autorizzate a ios/App/App/Info.plist:

<key>UIBackgroundModes</key>
<array>
<string>processing</string>
</array>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>app.capgo.backgroundtask.processing</string>
</array>

Esegui quindi il comando:

Finestra del terminale
npx cap sync ios
import { BackgroundTask, BackgroundTaskResult } from '@capgo/capacitor-background-task';

Definisci il callback all'interno dello scope del modulo affinché venga registrato non appena l'applicazione viene avviata dal sistema operativo.

import { BackgroundTask, BackgroundTaskResult } from '@capgo/capacitor-background-task';
const SYNC_TASK = 'sync-offline-data';
BackgroundTask.defineTask(SYNC_TASK, async () => {
try {
await fetch('https://api.example.com/sync', { method: 'POST' });
return BackgroundTaskResult.Success;
} catch {
return BackgroundTaskResult.Failed;
}
});

Chiamata registerTaskAsync Dopo che la tua app ha abbastanza contesto per abilitare il lavoro di background.

await BackgroundTask.registerTaskAsync(SYNC_TASK, {
minimumInterval: 30,
requiresNetwork: true,
});

minimumInterval Si tratta di minuti. L'Android impone un minimo di 15 minuti. L'iOS considera il valore come una data di inizio più precoce e può eseguire in un momento successivo.

const status = await BackgroundTask.getStatusAsync();
const isRegistered = await BackgroundTask.isTaskRegisteredAsync(SYNC_TASK);
const registeredTasks = await BackgroundTask.getRegisteredTasksAsync();
console.log({ status, isRegistered, registeredTasks });

Utilizza il trigger di testamento in fase di sviluppo o QA. Esegue ogni compito registrato immediatamente.

await BackgroundTask.triggerTaskWorkerForTestingAsync();
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);

iOS può interrompere una task di background prima che il tuo lavoro JavaScript si completi. Ascolta gli eventi di scadenza quando la pulizia o il checkpointing sono importanti.

const expiration = await BackgroundTask.addExpirationListener((event) => {
console.warn('Background task expired', event.taskName, event.taskId);
});
await expiration.remove();

Compatibilità delle task di background per React Native

Sezione intitolata “Compatibilità delle task di background per React Native”

Il plugin esporre anche una piccola layer di compatibilità per le app che stanno migrando da react-native-background-task.

import { BackgroundTask } from '@capgo/capacitor-background-task';
BackgroundTask.define(async () => {
await fetch('https://api.example.com/sync', { method: 'POST' });
});
await BackgroundTask.schedule({
period: 1800,
});
  • La pianificazione in background è opportunistica, non esatta.
  • Tieni i lavori brevi e idempotenti.
  • Mantieni qualsiasi stato necessario prima di tornare BackgroundTaskResult.Success.
  • Evita di affidarti alle attività in background per i termini o gli allarmi visibili dagli utenti.

Se stai utilizzando Inizia con l'installazione per pianificare il lavoro dei plugin nativi, connettilo con Usando @capgo/capacitor-background-task per la capacità nativa in Utilizzo di @capgo/capacitor-task di background Capgo Directory dei Plugin per il flusso di lavoro del prodotto in Capgo Directory dei Plugin Capacitor Plugin da Capgo per la dettaglio di implementazione in Capacitor Plugin da Capgo Aggiunta o Aggiornamento dei Plugin per la dettaglio di implementazione in Aggiunta o Aggiornamento dei Plugin, e Alternative Plugin Enterprise Ionic per il flusso di lavoro del prodotto in Alternative Plugin Enterprise Ionic