본문 바로가기
Flutter

[Flutter] 플러터 - fcm flutter_local_notifications 쓰는 이유

by s_hoonee 2024. 1. 19.
반응형
 

Ios는 자체적으로 알림을 띄우지만 aos는 안된다.  그래서 flutter_local_notifications를 사용한다.

flutter_local_notifications: ^버전

flutter_local_notifications를 사용할 것이기 때문에 기존 ios의 알림설정(fcm)은 꺼주도록 한다. 안끄면 로컬노티, fcm 두개가 동시에 중복으로 옵니다! 

    // FlutterLocalNotificationsPlugin 인스턴스 생성
    final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

    // Android용 알림 채널 생성
    await flutterLocalNotificationsPlugin
        .resolvePlatformSpecificImplementation<
            AndroidFlutterLocalNotificationsPlugin>()
        ?.createNotificationChannel(const AndroidNotificationChannel(
          'high_importance_channel', // 알림 채널 식별자
          'high_importance_notification', // 알림 채널 이름
          importance: Importance.max, // 알림 중요도 최대 설정
        ));

    // iOS 초기화 설정
    DarwinInitializationSettings iosInitializationSettings =
        const DarwinInitializationSettings(
      requestAlertPermission: true, // 알림 권한 요청: Alert
      requestBadgePermission: true, // 알림 권한 요청: Badge
      requestSoundPermission: true, // 알림 권한 요청: Sound
    );

    // 플랫폼별 앱 아이콘으로 알림 표시 설정
    InitializationSettings initializationSettings = InitializationSettings(
      android: const AndroidInitializationSettings("@mipmap/launcher_icon"),
      iOS: iosInitializationSettings,
    );

    // 알림 플러그인 초기화
    await flutterLocalNotificationsPlugin.initialize(
      initializationSettings,
      onDidReceiveNotificationResponse: (detail) async {
        print("포어그라운드에서 알림을 클릭했을 경우 이 함수 실행");
        if (detail.payload == null) return;
       // 알림으로 받은 Payload를 활용하여 알림을 클릭했을 때 동작을 여기서 제어
      },
    );

 

ios의 경우 기본적으로 어플이 열려있을때는 알림이 울리지 않도록 설정이 되어 있습니다. 그렇기 때문에 AppDelegate.swift에 아래의 코드를 추가하여 주어야 합니다. (method 안에 들어가야 함)

 

ios\Runner\AppDelegate.swift 에 추가 

     if #available(iOS 10.0, *) {
        UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
      }

 

넣어주면 끗~ local 세부설정은 다른 블로그 보세욤 많습니다~ 전 flutter_local_notifications를 사용하는 이유를 알려드리기 위한 글입니다~!