Lewati ke konten utama
menjadi.dev
Mobile

Background Fetch

Mekanisme menjalankan task ringan saat aplikasi di background.

Background fetch memungkinkan aplikasi menjalankan task periodik di background — download konten baru, sync data, update cache. expo-background-fetch menggunakan TaskManager untuk mendefinisikan task. Minimal interval yang bisa diset: 15 menit (900 detik), tapi OS bisa menunda lebih lama berdasarkan usage pattern dan battery level. Handler task HARUS cepat (maksimal 30 detik di iOS). Hasil task: NewData (data baru berhasil di-fetch), NoData (tidak ada perubahan), Failed (error). Batasan: iOS hanya menjalankan background fetch saat device di-charge + WiFi + user regular menggunakan app. Android lebih longgar tapi punya Doze mode. Jangan gunakan untuk real-time data — untuk itu pakai push notification.

Contoh Kode

import * as BackgroundFetch from "expo-background-fetch";
import * as TaskManager from "expo-task-manager";

TaskManager.defineTask("background-fetch", async () => {
  const newPosts = await fetchNewPosts();
  if (newPosts.length > 0) {
    await cachePosts(newPosts);
    return BackgroundFetch.BackgroundFetchResult.NewData;
  }
  return BackgroundFetch.BackgroundFetchResult.NoData;
});

await BackgroundFetch.registerTaskAsync("background-fetch", {
  minimumInterval: 900,
});

Istilah Terkait