Zum Inhalt springen

Getting Started

GitHub

@capgo/capacitor-background-task erlaubt einem Capacitor-Anwendungs-Registrieren benannter periodischer Aufgaben für Synchronisierung, Cache-Refreshes, Analytics-Delivery und andere Hintergrundabfragen.

Mit unserer AI-gestützten Setup können Sie das Plugin installieren. Fügen Sie die Capgo-Fähigkeiten zu Ihrem AI-Tool hinzu, indem Sie folgenden Befehl verwenden:

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

Verwenden Sie dann 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 die darunterstehenden plattform-spezifischen Anweisungen befolgen:

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

Fügen Sie dem Hintergrundprozessmodus und der erlaubten Aufgabenidentifikation 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>

Führen Sie dann aus:

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 eine Mindestzeit von 15 Minuten. iOS behandelt den Wert als frühesten Beginndatum 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 jeden registrierten Task sofort auf.

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

iOS kann einen Hintergrundauftrag vor dem Abschluss Ihrer JavaScript-Arbeit beenden. 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,
});
  • Hintergrundplanung ist opportun, nicht genau.
  • Halten Sie die Arbeit kurz und idempotent.
  • Speichern Sie jeden Zustand, den Sie benötigen, bevor Sie zurückkehren BackgroundTaskResult.Success.
  • Vermeiden Sie es, sich auf Hintergrundaufgaben für sichtbare Fristen oder Alarms zu verlassen.

Wenn Sie verwenden Getting Started um native Plugin-Arbeit zu planen, 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.