firebase

flutter_local_notifications 설정

이나주니 2023. 2. 23. 11:15
반응형

flutter_local_notifications: ^13.0.0


Android

main/AndroidManifest.xml

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

부팅 시 서비스 실행, 진동, 알림 오면 화면 열리기, full screen 인텐트 사용 허용


// Android
const AndroidInitializationSettings initAndroid =
    AndroidInitializationSettings('@drawable/ic_stat_notification');
// iOS
late DarwinInitializationSettings initDarwin;

// notification init
static Future<void> init() async {
    initDarwin = const DarwinInitializationSettings(
      onDidReceiveLocalNotification: onDidReceiveLocalNotification,
    );

    initializationSettings = InitializationSettings(
      android: initAndroid,
      iOS: initDarwin,
    );

    await localNotification.initialize(
      initializationSettings,
      onDidReceiveNotificationResponse: selectNotification,
      onDidReceiveBackgroundNotificationResponse: selectNotification,
    );
  }

포어그라운드 알림 생성

AndroidNotificationDetails androidDetail = const AndroidNotificationDetails(
    'team_chat_id',
    'team_chat_name',
    channelDescription: '',
    importance: Importance.max,
    priority: Priority.high,
    playSound: true,
    icon: '@drawable/ic_stat_notification',
  );

※ 백그라운드 아이콘은 AndroidManifest.xml 에서

여기서 관리함


Ios

ios 는 특성상 foreground에서는 알림이 작동되지 않게 설정되어있다.

해당 코드를 입력시 foreground에서도 작동이 되도록 설정한다.

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

알림 생성

DarwinNotificationDetails iosDetail = const DarwinNotificationDetails(
    presentAlert: true,
    presentBadge: true,
    presentSound: true,
  );

 

반응형