-
[Flutter] Workmanager함께 공부하는 Flutter 2025. 3. 17. 16:58반응형
workmanager 패키지는 Flutter에서 백그라운드 작업을 스케줄링하는 데 사용됩니다. 다음은 workmanager를 사용하는 기본적인 예제입니다.
⸻
1️⃣ pubspec.yaml에 패키지 추가
dependencies:
flutter:
sdk: flutter
workmanager: ^0.5.1⸻
2️⃣ main.dart에서 초기화 및 작업 등록
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';void main() async {
WidgetsFlutterBinding.ensureInitialized();// Workmanager 초기화
await Workmanager().initialize(
callbackDispatcher,
isInDebugMode: true, // 디버그 모드에서 실행 로그 출력
);// 주기적인 작업 등록 (15분마다 실행)
await Workmanager().registerPeriodicTask(
"uniqueTaskId",
"simpleTask",
frequency: Duration(minutes: 15), // 최소 15분
);runApp(const MyApp());
}// 백그라운드에서 실행될 작업 정의
void callbackDispatcher() {
Workmanager().executeTask((task, inputData) async {
print("백그라운드 작업 실행: $task");if (task == "simpleTask") { // 여기에서 원하는 백그라운드 작업 수행 print("백그라운드에서 실행 중..."); } return Future.value(true);
});
}class MyApp extends StatelessWidget {
const MyApp({super.key});@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text("Workmanager Example")),
body: Center(
child: ElevatedButton(
onPressed: () async {
await Workmanager().registerOneOffTask(
"oneTimeTaskId",
"simpleTask",
);
},
child: const Text("즉시 실행 작업 등록"),
),
),
),
);
}
}⸻
3️⃣ iOS & Android 설정
Android 설정 (AndroidManifest.xml)
백그라운드에서 실행할 권한 추가:
서비스 등록:
android/app/src/main/kotlin/패키지명/MainActivity.kt 수정
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import be.tramckrijte.workmanager.WorkmanagerPluginclass MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
WorkmanagerPlugin.registerWith(flutterEngine)
}
}⸻
iOS 설정 (ios/Runner/Info.plist)
백그라운드 실행을 위한 설정 추가:
UIBackgroundModes
fetch
processing ⸻
🏁 결과
1. 앱이 실행되면 Workmanager가 초기화됨.
2. 15분마다 자동으로 백그라운드 작업(simpleTask)이 실행됨.
3. 버튼을 누르면 즉시 실행 작업이 등록됨.이제 Workmanager를 이용해 주기적인 작업(예: API 호출, 로컬 데이터 처리 등)을 백그라운드에서 수행할 수 있습니다! 🚀
반응형'함께 공부하는 Flutter' 카테고리의 다른 글
[Flutter] 연산이 너무 많아서 UI가 그려지지 않는 문제가 있다면 Compute 로 해결! (0) 2025.03.28 [Flutter] audioplayers 패키지 이용할 때 소리가 중간에 끊긴다면? (0) 2024.08.04 [Flutter] 스트림으로 응답 받아서 보여주는 예시 (0) 2024.07.18 [Flutter] iOS Pod 오류 시 삭제 대응 (0) 2024.02.09 [Flutter] Provider에서 listen: true/fasle 차이 (0) 2024.02.03