[flutter] 플러터의 알림 (Notification) 처리 방법

안녕하세요! 이번에는 플러터(Flutter)에서 알림(Notification)을 처리하는 방법에 대해 알아보겠습니다.

알림은 사용자에게 중요한 정보와 이벤트를 알려주는 도구로, 기기의 상태나 앱의 기능과 관련된 내용을 전달하는 역할을 합니다. 플러터에서는 flutter_local_notifications 패키지를 사용하여 알림을 생성하고 관리할 수 있습니다.

패키지 추가하기

먼저, flutter_local_notifications 패키지를 사용하기 위해 pubspec.yaml 파일에 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 패키지를 추가합니다.

dependencies:
  flutter_local_notifications: ^5.0.0

패키지를 추가한 후에는 터미널에서 flutter pub get 명령어를 실행하여 패키지를 다운로드 및 설치합니다.

알림 생성하기

알림을 생성하기 위해서는 FlutterLocalNotificationsPlugin 인스턴스를 생성해야 합니다. 이를 위해서는 먼저 main.dart 파일에서 다음과 같이 패키지를 import 합니다.

import 'package:flutter_local_notifications/flutter_local_notifications.dart';

그리고 main 함수에서 FlutterLocalNotificationsPlugin 인스턴스를 생성합니다.

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
      FlutterLocalNotificationsPlugin();

  // 나머지 코드 작성
}

이제 알림을 생성하기 위한 기본 설정을 해보겠습니다. 알림 설정은 AndroidInitializationSettingsIOSInitializationSettings를 사용하여 각 플랫폼에 대한 설정을 구성할 수 있습니다. 아래는 예시입니다.

var initializationSettingsAndroid =
      AndroidInitializationSettings('app_icon');

var initializationSettingsIOS = IOSInitializationSettings();

var initializationSettings = InitializationSettings(
      android: initializationSettingsAndroid, iOS: initializationSettingsIOS);

await flutterLocalNotificationsPlugin.initialize(
      initializationSettings,
      onSelectNotification: onSelectNotification);

위 코드에서 AndroidInitializationSettings('app_icon') 부분에서는 안드로이드 앱 아이콘의 이름을 지정합니다. IOS 초기화 설정은 따로 지정해주지 않아도 됩니다.

알림 생성을 위한 기본 설정이 완료되었습니다.

알림 보내기

이제 알림을 보내는 코드를 작성해보겠습니다. show 메서드를 사용하여 알림을 생성하고 보낼 수 있습니다. 아래는 예시입니다.

Future<void> showNotification({
  int id,
  String title,
  String body,
  String payload,
}) async {
  var androidPlatformChannelSpecifics = AndroidNotificationDetails(
    'your channel id',
    'your channel name',
    'your channel description',
    importance: Importance.max,
    priority: Priority.high,
    showWhen: false,
  );

  var iOSPlatformChannelSpecifics = IOSNotificationDetails();

  var platformChannelSpecifics = NotificationDetails(
    android: androidPlatformChannelSpecifics,
    iOS: iOSPlatformChannelSpecifics,
  );

  await flutterLocalNotificationsPlugin.show(
    id,
    title,
    body,
    platformChannelSpecifics,
    payload: payload,
  );
}

위 코드를 사용하여 다양한 알림을 생성하고 보낼 수 있습니다. id는 알림을 구분하기 위한 고유한 식별자이며, title, body는 알림의 제목과 내용을 지정할 수 있습니다. payload는 추가로 전달할 데이터이며, 필요에 따라 사용할 수 있습니다.

알림 클릭 이벤트 처리하기

알림을 클릭하여 특정 액션을 수행하고 싶을 때는 flutterLocalNotificationsPlugin.initialize 함수에서 onSelectNotification 콜백을 설정해야 합니다. 이 콜백 함수는 알림을 클릭하면 실행되는 함수로, 클릭한 알림의 정보를 받아 추가 동작을 수행할 수 있습니다. 아래는 예시입니다.

Future<dynamic> onSelectNotification(String payload) async {
  // 알림 클릭 이벤트 처리하는 코드 작성

  return null;
}

알림 클릭 이벤트 처리를 위한 코드를 onSelectNotification 함수 내에 작성하면 됩니다. 이 함수에서 반환한 값은 해당 알림에 대한 처리 결과를 플러터 엔진에 반환합니다.

마무리

플러터에서 알림을 처리하는 방법에 대해 알아보았습니다. flutter_local_notifications 패키지를 사용하여 플러터 앱에 알림 기능을 쉽게 추가할 수 있습니다. 알림 생성, 알림 클릭 이벤트 처리와 같은 기본적인 기능 외에도 다양한 옵션들을 사용하여 원하는 알림을 만들 수 있습니다. 자세한 내용은 패키지의 공식 문서를 참고하시기 바랍니다.

감사합니다!