Lompat ke konten

Getting Started

@capgo/capacitor-background-task Mengizinkan aplikasi Capacitor mendaftarkan pekerjaan berulang untuk sinkronisasi, pembaruan cache, pengiriman analisis, dan operasi fetch latar belakang lainnya.

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

Tambahkan mode pengolahan latar belakang dan identifikasi tugas yang diizinkan ke ios/App/App/Info.plist:

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

Lalu jalankan:

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

Tentukan callback di lingkungan modul sehingga terdaftar segera ketika aplikasi dimulai oleh sistem operasi.

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

Setelah aplikasi Anda memiliki konteks yang cukup untuk mengaktifkan pekerjaan latar belakang. registerTaskAsync Salin ke clipboard

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

minimumInterval Periksa Status

Bagian berjudul “Periksa Status”

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

Salin ke clipboard

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

iOS dapat menghentikan tugas latar belakang sebelum pekerjaan JavaScript Anda selesai. Dengarkan event kedaluwarsa ketika membersihkan atau memantau titik kontrol penting.

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

Plugin ini juga mengekspos layer kompatibilitas kecil untuk aplikasi yang bermigrasi dari 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,
});
  • Pengaturan latar belakang adalah oportunis, bukan tepat.
  • Tetapkan pekerjaan singkat dan idempoten.
  • Simpan semua keadaan yang Anda butuhkan sebelum kembali. BackgroundTaskResult.Success.
  • Hindari mengandalkan tugas latar belakang untuk jadwal pengguna yang terlihat atau alarm.

Jika Anda menggunakan Getting Started untuk merencanakan pekerjaan plugin native, hubungkannya dengan Menggunakan @capgo/capacitor-tugas-latar-belakang untuk kemampuan native di Menggunakan @capgo/capacitor-tugas-latar-belakang, Capgo Direktori Plugin untuk alur kerja produk di Direktori Plugin Capgo Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugin oleh Capgo Menambahkan atau Mengupdate Plugin untuk detail implementasi di Menambahkan atau Mengupdate Plugin, dan Alternatif Plugin Enterprise Ionic untuk alur kerja produk di Alternatif Plugin Enterprise Ionic