Lebih lanjut ke konten utama
Kembali ke plugin
@capgo/capacitor-background-task
Tutorial
oleh github.com/Cap-go

Tugas Latar

Jadwalkan tugas fetch latar belakang berkala pada iOS dan Android dengan registrasi tugas Expo-style

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 minimumInterval sebagai tanggal mulai tercepat dan mungkin dijalankan lebih lambat.
  • Uji coba pengolahan latar belakang iOS pada perangkat fisik.

Referensi Lengkap