Petunjuk
Tutorial Mengenai Tugas Latar Belakang
Menggunakan @capgo/capacitor-background-task
Jadwalkan pekerjaan fetch latar belakang berulang dalam aplikasi Capacitor dengan tugas yang dinamai, pendaftaran yang berlangsung, pengecekan status, penghapusan pendaftaran, dan trigger pengembangan.
Instal
npm install @capgo/capacitor-background-task
npx cap sync
Pengaturan iOS
Tambahkan dukungan pengolahan latar belakang 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:
npx cap sync ios
Apa yang Dapat Dilihat dari Plugin Ini
defineTask- Tentukan callback JavaScript untuk tugas bernama.registerTaskAsync- Simpan dan jadwalkan tugas periodik.unregisterTaskAsync- Batalkan satu tugas.isTaskRegisteredAsync- Periksa status pendaftaran satu tugas.getRegisteredTasksAsync- Daftar nama tugas yang didaftarkan.getStatusAsync- Periksa ketersediaan tugas latar belakang native.triggerTaskWorkerForTestingAsync- Aktifkan tugas yang didaftarkan secara langsung untuk pengembangan.addExpirationListener- Reaksi ketika iOS mengakhiri tugas.
Contoh Penggunaan
Tentukan tugas di lingkungan modul sehingga tersedia ketika OS bangun aplikasi:
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;
}
});
await BackgroundTask.registerTaskAsync(SYNC_TASK, {
minimumInterval: 30,
requiresNetwork: true,
});
Periksa status dan nama tugas yang didaftarkan:
const status = await BackgroundTask.getStatusAsync();
const tasks = await BackgroundTask.getRegisteredTasksAsync();
console.log({ status, tasks });
Aktifkan jalankan pengembangan:
await BackgroundTask.triggerTaskWorkerForTestingAsync();
Membatalkan tugas:
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);
Catatan Platform
- Jadwal tugas latar belakang bersifat opportunis, bukan timer tepat.
- Android periodic work memiliki interval minimum 15 menit.
- iOS menganggap
minimumIntervalsebagai tanggal mulai tercepat dan mungkin dijalankan lebih lambat. - Uji coba pengolahan latar belakang iOS pada perangkat fisik.
Referensi Lengkap
- GitHub: https://github.com/Cap-go/capacitor-tugas-kebelakang/
- Dokumen: /docs/plugins/tugas-kebelakang/