Menggunakan @capgo/capacitor-background-task
Jadwalkan fetch background berkala di aplikasi Capacitor dengan task bernama, registrasi persisten, pengecekan status, unregister, dan trigger development. Plugin ini memakai Android WorkManager dan iOS BGTaskScheduler.
Instal
npm install @capgo/capacitor-background-task
npx cap sync
Setup iOS
Tambahkan dukungan background processing 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 Diekspos Plugin Ini
defineTask- Definisikan callback JavaScript untuk task bernama.registerTaskAsync- Simpan dan jadwalkan task periodik.unregisterTaskAsync- Batalkan satu task.isTaskRegisteredAsync- Cek status registrasi sebuah task.getRegisteredTasksAsync- Tampilkan nama task yang terdaftar.getStatusAsync- Cek ketersediaan native background task.triggerTaskWorkerForTestingAsync- Trigger task terdaftar secara langsung untuk development.addExpirationListener- Respons saat iOS menghentikan task karena kedaluwarsa.
Contoh Penggunaan
Definisikan task di scope module agar tersedia saat OS membangunkan app:
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,
});
Cek status dan nama task yang terdaftar:
const status = await BackgroundTask.getStatusAsync();
const tasks = await BackgroundTask.getRegisteredTasksAsync();
console.log({ status, tasks });
Trigger run development:
await BackgroundTask.triggerTaskWorkerForTestingAsync();
Batalkan task:
await BackgroundTask.unregisterTaskAsync(SYNC_TASK);
Catatan Platform
- Jadwal background task ditentukan oleh sistem, bukan timer yang presisi.
- Periodic work di Android memiliki interval minimal 15 menit.
- iOS menganggap
minimumIntervalsebagai tanggal mulai paling awal dan bisa berjalan lebih lambat. - Uji background processing iOS di perangkat fisik.
Referensi Lengkap
- GitHub: https://github.com/Cap-go/capacitor-background-task/
- Dokumentasi: /docs/plugins/background-task/
Lanjutkan dari bagian Menggunakan @capgo/capacitor-background-task
Jika Anda menggunakan Menggunakan @capgo/capacitor-background-task untuk merencanakan pekerjaan plugin native, hubungkan dengan @capgo/capacitor-background-task untuk detail implementasi di @capgo/capacitor-background-task, Panduan Memulai untuk detail implementasi di Getting Started, Direktori Plugin Capgo untuk alur kerja produk di Direktori Plugin Capgo, Plugin Capacitor oleh Capgo untuk detail implementasi di Plugin Capacitor oleh Capgo, dan Menambahkan atau Memperbarui Plugin untuk detail implementasi di bagian Menambahkan atau Memperbarui Plugin.