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