Passer à la navigation

Démarrage

@capgo/capacitor-background-task Permet à une application Capacitor de s'inscrire pour des tâches de synchronisation, de mise à jour de cache, de livraison d'analytiques et d'autres opérations de récupération de fond d'écran.

Fenêtre de terminal
npm install @capgo/capacitor-background-task
npx cap sync

Ajoutez le mode de traitement de fond et l'identifiant de tâche autorisé ios/App/App/Info.plist:

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

Exécutez ensuite :

Fenêtre de terminal
npx cap sync ios
import { BackgroundTask, BackgroundTaskResult } from '@capgo/capacitor-background-task';

Définissez l'appel de retour au niveau du module afin qu'il soit enregistré dès que l'application est lancée par le système d'exploitation.

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

Appel registerTaskAsync Après que votre application ait suffisamment de contexte pour activer le travail en arrière-plan.

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

minimumInterval La valeur est en minutes. Android impose un minimum de 15 minutes. iOS traite la valeur comme une date de début la plus tôt et peut exécuter plus tard.

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

Utilisez le déclencheur de test en développement ou en QA. Il appelle immédiatement chaque tâche enregistrée.

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

iOS peut interrompre une tâche de fond avant que votre travail JavaScript ne se termine. Écoutez les événements d'expiration lorsque des nettoyages ou des points de contrôle sont importants.

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

Compatibilité des Tâches de Fond pour React Native

Section intitulée “Compatibilité des Tâches de Fond pour React Native”

Le plugin expose également une petite couche de compatibilité pour les applications en train de migrer depuis 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 planification en arrière-plan est opportuniste, pas exacte.
  • Gardez les tâches courtes et idempotentes.
  • Sauvegardez tout l'état dont vous avez besoin avant de retourner BackgroundTaskResult.Success.
  • Évitez de vous fier aux tâches en arrière-plan pour les échéances ou les alarmes visibles par l'utilisateur.

Si vous utilisez Getting Started pour planifier le travail de plugin natif, connectez-le avec Utilisez @capgo/capacitor-task-en-arrière-plan pour la capacité native dans Utilisez @capgo/capacitor-task-en-arrière-plan Capgo Répertoire des plugins pour le flux de travail du produit dans Capgo Répertoire des plugins, Capacitor Plugins par Capgo pour le détail d'implémentation dans Capacitor Plugins par Capgo, Ajouter ou Mettre à jour les plugins pour le détail d'implémentation dans Ajouter ou Mettre à jour les plugins, et Alternatives de plugins Ionic Enterprise pour le flux de travail du produit dans Alternatives de plugins Ionic Enterprise.