Saltare al contenuto

Iniziare

GitHub

@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.

Puoi utilizzare la nostra configurazione assistita da AI per installare il plugin. Aggiungi le Capgo competenze al tuo strumento di AI utilizzando il seguente comando:

Finestra del terminale
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Usa poi la seguente richiesta:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-background-task` plugin in my project.

Se preferisci l'installazione manuale, installa il plugin eseguendo i seguenti comandi e segui le istruzioni specifiche per la piattaforma riportate di seguito:

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

Aggiungi il modulo di elaborazione in background e l'identificatore della task autorizzata 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 poi:

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 l'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ù presto 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 });

Usa il trigger di testamento in fase di sviluppo o QA. Chiamerà ogni compito registrato immediatamente.

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

iOS può interrompere un compito di background prima che il tuo lavoro JavaScript sia completato. 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à con compiti di background di React Native

Sezione intitolata “Compatibilità con compiti di background di React Native”

Il plugin esporre anche una piccola layer di compatibilità per le app che migrano 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 è occasionale, non esatta.
  • Mantieni il lavoro breve e idempotente.
  • Mantieni qualsiasi stato necessario prima di tornare BackgroundTaskResult.Success.
  • Evita di affidarti a compiti di background per i termini o gli allarmi visibili dall'utente.

Se stai utilizzando Getting Started per pianificare il lavoro di plugin nativo, connettilo con Utilizzando @capgo/capacitor-compito-di-background per la capacità nativa in Utilizzando @capgo/capacitor-compito-di-background, Capgo Directory dei plugin per il flusso di lavoro del prodotto in Capgo Directory dei plugin, Plugin da Capacitor sviluppati da Capgo per i dettagli di implementazione in Plugin da Capacitor sviluppati da Capgo, Aggiunta o Aggiornamento di Plugin per i dettagli di implementazione in Aggiunta o Aggiornamento di Plugin, e Alternative per Plugin Enterprise di Ionic per il workflow del prodotto in Alternative per Plugin Enterprise di Ionic.