Zum Inhalt springen

Anfang

GitHub

@capgo/capacitor-background-task lässt ein Capacitor-App namens periodische Jobs für Synchronisierung, Cache-Refreshes, Analytics-Übermittlung und andere Hintergrundabfragen registrieren.

Mit unserer AI-gestützten Setup können Sie das Plugin installieren. Fügen Sie den Capgo-Fähigkeiten Ihrem AI-Tool mit folgendem Befehl hinzu:

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

Dann verwenden Sie die folgende Anweisung:

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

Wenn Sie die manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und folgen Sie den unten angegebenen Plattform-spezifischen Anweisungen:

Terminalfenster
npm install @capgo/capacitor-background-task
npx cap sync

Fügen Sie dem Hintergrundprozessmodus und der erlaubten Aufgabenidentifikationsnummer hinzu: ios/App/App/Info.plist:

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

Dann ausführen:

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

Definieren Sie die Callback-Funktion im Modulbereich, damit sie so schnell wie möglich beim Start des Betriebssystems registriert wird.

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;
}
});

Aufrufen registerTaskAsync nachdem Ihr App genügend Kontext hat, um den Hintergrundjob zu aktivieren.

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

minimumInterval wird in Minuten angezeigt. Android erzwingt einen Mindestwert von 15 Minuten. iOS behandelt den Wert als frühesten Beginn und kann später laufen.

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

Verwenden Sie den Testtrigger in der Entwicklung oder QA. Er ruft alle registrierten Aufgaben sofort auf.

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

iOS kann einen Hintergrundauftrag vorzeitig beenden, bevor Ihr JavaScript-Code abgeschlossen ist. Hören Sie auf Ablaufereignisse, wenn die Reinigung oder das Checkpointen relevant ist.

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

Das Plugin bietet auch eine kleine Kompatibilitätslayer für Apps, die von 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,
});
  • Hintergrundscheduling ist opportunistisch, nicht genau.
  • Arbeit kurz halten und idempotent.
  • Jede notwendige Zustandsänderung speichern, bevor Sie zurückkehren. BackgroundTaskResult.Success.
  • Vermeiden Sie es, sich auf Hintergrundaufgaben für sichtbare Fristen oder Alarms zu verlassen.

Wenn Sie " Getting Started für die Planung von native Plugin-Arbeiten verwenden, verbinden Sie es mit Mit @capgo/capacitor-Hintergrundaufgabe für die native Fähigkeit in Mit @capgo/capacitor-Hintergrundaufgabe, Capgo Plugin-Ordner für den Produktworkflow in Capgo Plugin-Ordner, Capacitor Plugins by Capgo for the implementation detail in Capacitor Plugins by Capgo, Plugins hinzufügen oder aktualisieren für die Implementierungsdetails in Plugins hinzufügen oder aktualisieren, und Alternativen zu Ionic Enterprise Plugins für den Produktworkflow in Alternativen zu Ionic Enterprise Plugins.