ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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.WorkmanagerPlugin

    class 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 호출, 로컬 데이터 처리 등)을 백그라운드에서 수행할 수 있습니다! 🚀

    반응형
Designed by Tistory.