[flutter] 플러터에서 오프라인 푸시 알림 구현하기

플러터(Flutter)는 크로스 플랫폼 모바일 애플리케이션 개발을 위한 프레임워크로, 안드로이드와 iOS 모두에서 동작하는 앱을 만들 수 있습니다. 이번 포스트에서는 플러터를 사용하여 오프라인 푸시 알림을 구현하는 방법에 대해 알아보겠습니다.

1. 패키지 설치

플러터에서 오프라인 푸시 알림을 구현하기 위해서는 다음과 같은 패키지를 설치해야 합니다.

dependencies:
  flutter_local_notifications: ^5.0.0
  shared_preferences: ^2.0.6

플러터 패키지 관리 파일(pubspec.yaml)에 위의 패키지를 추가한 후, 터미널에서 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

2. 알림 설정

플러터에서 오프라인 푸시 알림을 사용하기 위해서는 알림 채널을 설정해야 합니다. 알림 채널은 알림의 속성(사운드, 진동 등)과 카테고리를 정의하는 역할을 합니다.

class NotificationService {
  static final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
      FlutterLocalNotificationsPlugin();

  static Future<void> initialize() async {
    const AndroidInitializationSettings initializationSettingsAndroid =
        AndroidInitializationSettings('ic_launcher');
    final InitializationSettings initializationSettings =
        InitializationSettings(android: initializationSettingsAndroid);

    await _flutterLocalNotificationsPlugin.initialize(initializationSettings);
  }

  static Future<void> showNotification(
      int id, String title, String body) async {
    const AndroidNotificationDetails androidPlatformChannelSpecifics =
        AndroidNotificationDetails(
      'your_channel_id',
      'your_channel_name',
      'your_channel_description',
      importance: Importance.high,
      priority: Priority.high,
    );

    const NotificationDetails platformChannelSpecifics =
        NotificationDetails(android: androidPlatformChannelSpecifics);

    await _flutterLocalNotificationsPlugin.show(
      id,
      title,
      body,
      platformChannelSpecifics,
      payload: 'your_notification_payload',
    );
  }
}

위의 코드는 NotificationService 클래스를 생성하여 오프라인 푸시 알림을 설정하는 예시입니다. initialize 메소드를 호출하여 알림 플러그인을 초기화하고, showNotification 메소드를 호출하여 특정 ID, 제목 및 내용의 알림을 표시할 수 있습니다.

3. 앱에서 알림 호출

앱에서 특정 이벤트(메시지 도착, 상태 업데이트 등)가 발생할 때 알림을 호출할 수 있습니다. 아래 예시 코드는 버튼을 누르면 알림이 표시되도록 하는 기능을 구현한 것입니다.

FloatingActionButton(
  onPressed: () {
    NotificationService.showNotification(
      0,
      '알림 제목',
      '알림 내용',
    );
  },
  child: Icon(Icons.notifications),
)

위의 코드에서는 FloatingActionButton 위젯에 onPressed 콜백 함수를 설정하고, 해당 함수에서 NotificationService.showNotification 메소드를 호출하여 알림을 표시합니다. 알림의 ID, 제목 및 내용을 파라미터로 전달할 수 있습니다.

4. 권한 설정

플러터에서 오프라인 푸시 알림을 사용하기 위해 필요한 권한을 설정해야 합니다. Android에서는 AndroidManifest.xml 파일에 다음 코드를 추가합니다.

<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />

iOS에서는 Info.plist 파일에 다음 코드를 추가합니다.

<key>UIBackgroundModes</key>
<array>
  <string>fetch</string>
</array>

결론

위의 방법을 따라 플러터 앱에서 오프라인 푸시 알림을 구현할 수 있습니다. 이를 통해 사용자들에게 중요한 정보나 업데이트를 알리는 기능을 제공할 수 있습니다. 자세한 내용은 flutter_local_notifications 패키지의 문서를 참고하시기 바랍니다.